采用C/S架构,即客户端/服务器。客户端和服务器区分开,通过客户端发送请求来和服务器交互。
用户通过开发的应用程序来访问数据库(C/S),应用程序通过连接器(connecter)连接到数据库。
连接器包含了各种开发语言的接口,连接完成后MySQL会分配一个线程提供服务,执行对应操作的时候就会调用MySQL定义好的接口组件来接收请求。
把sql语句解析完成后,结合当前数据库状态来优化对应操作。
mysql利用caches和buffer来提高系统系统性能。
数据读出和写入的时候会通过存储引擎来选择数据的相关操作,最后写入磁盘或内存。
存储引擎:MySQL管理数据文件的一种技术。
myisam
innodb
最大支持数据量:myisam>innodb
事务:myisam不支持,
锁:innodb支持行级锁,myisam只支持表锁(整张表加锁)
MVCC(多版本并发控制):允许多用户进行访问(并发),myisam不支持,
聚集索引:innodb支持
缓存:innodb支持
外键:myisam不支持
myisam特点:myisam功能简单,所以数据访问快
innodb:功能丰富,效率没有myisam高
mysql5.5版本以前使用的是myisam作为默认存储引擎,5.5以后使用的默认存储引擎就是innodb了。
MySQL5.5以前: 早期innodb类型的数据表只有一个frm文件,而数据文件只有一个,这个数据文件存放了innodb类型的所有表的数据。 修改方法: 启用:innodb_file_per_table=ON (MariaDB 5.5以后版是默认值) mysql> select @@innodb_file_per_table; +-------------------------+ | @@innodb_file_per_table | +-------------------------+ | 1 | +-------------------------+ 1 row in set (0.00 sec)
修改存储引擎的方法:
方法1: vim /etc/my.cnf [mysqld] default_storage_engine= InnoDB 方法2: CREATE TABLE tb_name(... ) ENGINE=InnoDB; ALTER TABLE tb_name ENGINE=InnoDB;
show table status from tb_name\G
show table status like 'tb_name%'
Performance_Schema:系统自带的数据库Performance_Schema使用的存储引擎
Memory:数据存放在内存中,主要存放一些临时数据。information_schema这个系统数据库就是使用的memory存储引擎。
mysql:mysql的核心数据库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息
Performance_Schema:MySQL 5.5开始新增的数据库,用于收集数据库服务器性能参数
information_schema:MySQL 5.0之后产生的,一个虚拟数据库,物理上并不存在information_schema数据库,存放MySQL的元数据信息。
sys 数据库:MySQL5.7之后新增加的数据库,库中所有数据源来自performance_schema。目标是把performance_schema的把复杂度降低,让DBA能更好的阅读这个库里的内容