MySQL逻辑架构
连接器
连接器负责和客户端建立、维持和管理连接,以及权限验证等。
建立连接:
mysql -h host -u user -p
mysql -u xxxuser xxxdb
最大连接数:
show variables like 'max_connections';
连接默认自动断开时间:
show variables like 'wait_timeout';
当由于连接数过多导致数据库不可用时,可以手动kill掉空闲连接。
长连接 vs 短连接
使用长连接可以减少建立连接的次数,但是过多长连接会消耗很多内存。
常用的长连接实现方式是使用数据库连接池。
查询缓存
建议不要使用查询缓存,尤其是对于更新频繁的数据库,查询缓存的命中率非常低。对于静态表,可以考虑使用查询缓存。
从MySQL 8.0开始,不再支持查询缓存。
分析器
词法分析、语法分析
优化器
选择索引、多表关联顺序等。
执行器
调用对应存储引擎的接口
存储引擎
负责数据的存储和提取。MySQL支持InnoDB、MyISAM、Memory等多种存储引擎。