一、Mysql整体架构
(一)网络连接层
1、数据库连接池(Connnection Pool)
(1)使用线程池接收处理客户端连接;
(2)省去了创建线程、分配栈空间等一系列动作,提升性能,节省资源开销;
2、实用命令
(1)show processlist;查询所有正在运行的线程;
(2)show variables like '%max_connections%';查询数据库当前最大连接数;
(3)set GLOBAL max_connections = 200;设置数据库最大连接数;
(4)show status like "Threads%";查询客户端连接数;
(二)系统服务层
1、SQL接口组件(SQL Interface)
(1)接收客户端发送的SQL语句,向客户端返回处理结果;
(2)划分SQL语句类型(DML、DDL、DQL、DCL、TCL);
(3)触发器;
2、解析器(Parser)
(1)验证SQL语句是否正确;
(2)词法分析、语义分析、语法树生成等;
(3)“翻译”成机器指令;
3、优化器(Optimizer)
(1)生成执行计划;
(2)调用存储引擎API执行SQL语句;
4、缓存与缓冲(Caches & Buffers)
(1)查询缓存:Mysql8.0以后取消;
(2)写入缓冲区(InnoDB的缓冲区叫做innodb_buffer_pool):减少大量磁盘IO,进一步提高数据库整体性能;
(三)存储引擎层
1、可插拔式的存储引擎(Pluggable Storage Engines)
(1)show variables like '%storage_engine%';查询命令;
(2)所有与磁盘打交道的工作:数据管理、库表管理、索引管理等等;
(四)文件系统层
1、文件系统(File System)
与上层存储引擎做交互,负责数据的最终存储与持久化工作;
2、日志板块(Logs)
binlog、redo-log、undo-logs、error-log、general-log、slow-log、relay-log等;
3、数据板块(Files)
数据文件类型;