MySQL执行流程与架构
show global status like 'Thread%';--查询线程链接情况
查看链接线程,默认的最大连接数是151,允许的最大的连接数是100000个
show global variables like 'max_connections';--查询最大连接数
show global variables like 'wait_timeout'; --交互式超时时间
--动态修改:
set global max_connections = 1024;
--静态修改是修改配置文件,my.cnf
show global variables like 'interactive_timeout'; --非交互式超时时间
mysql是半双工的链接方式
mysql控制服务端发送包的大小,默认是4M,这个值是可以修改
show global variables like 'max_allowed_packet'; --查询一次性传输数据大小
mysql的查询缓存,查看缓存开启状态,一般数据缓存是关着的,但是数据库一旦开启缓存,稍微修改一点数据,缓存失效
show global variables like 'query_cache%';
mysql有解析器
解析树
查询优化器 Optimizer,Exection Plans,基于开销cost来选择
show status like 'Last_query_cost'查询最后一条语句的开销
explain可以做执行计划工具,尝试模拟服务端会如何执行该sql,根据explain
存储引擎:
查看存储引擎:show table status from 'dbname';
show engines;可以查看数据库引擎的功能
memory是放在缓存里面,重启就没有了
csv可以用excel打开
innodb可以做事务,适合读写的链接
myisam是isam升级来的,适合读取较多的
不同场景下对于mysql的使用要求不一致,所以会有这么多的引擎
Feature | MyISAM | Memory | InnoDB | Archive | NDB |
---|---|---|---|---|---|
B-tree indexes | Yes | Yes | Yes | No | No |
Backup/point-in-time recovery (note 1) | Yes | Yes | Yes | Yes | Yes |
Cluster database support | No | No | No | No | Yes |
Clustered indexes | No | No | Yes | No | No |
Compressed data | Yes (note 2) | No | Yes | Yes | No |
Data caches | No | N/A | Yes | No | Yes |
Encrypted data | Yes (note 3) | Yes (note 3) | Yes (note 4) | Yes (note 3) | Yes (note 3) |
Foreign key support | No | No | Yes | No | Yes (note 5) |
Full-text search indexes | Yes | No | Yes (note 6) | No | No |
Geospatial data type support | Yes | No | Yes | Yes | Yes |
Geospatial indexing support | Yes | No | Yes (note 7) | No | No |
Hash indexes | No | Yes | No (note 8) | No | Yes |
Index caches | Yes | N/A | Yes | No | Yes |
Locking granularity | Table | Table | Row | Row | Row |
MVCC | No | No | Yes | No | No |
Replication support (note 1) | Yes | Limited (note 9) | Yes | Yes | Yes |
Storage limits | 256TB | RAM | 64TB | None | 384EB |
T-tree indexes | No | No | No | No | Yes |
Transactions | No | No | Yes | No | Yes |
Update statistics for data dictionary | Yes | Yes | Yes | Yes | Yes |
mysql架构分层:
一条查询语句的执行流程
磁盘预加载,需要的数据的附近的数据预加载,磁盘加载数据到内存的最小单位:page(页) 默认是16KB