MySQL逻辑架构
文章插图
Mysql逻辑架构共三层:
- 入口层:连接/线程处理
- 服务执行层
- 存储引擎
文章插图
【一文看懂Mysql架构】
连接/线程处理
像大多数架构来说,入口层是必不可少的;Mysql入口层主要负责连接管理和认证及权限管理等 。
- 连接管理:每个连接拥有一个线程,Mysql服务端维护了一个维护连接的线程池
- 认证管理:基于用户名、原始主机信息和密码;如果使用了SSL连接,还可以使用X.509证书认证
- 权限管理:Mysql对库、表及操作权限都可以进行约束管理
执行层主要包含以下组件:
- 查询缓存:像大多数架构中的redis
- 解析器:词法分析和语法分析,创建一个解析树(内部的数据结构)
- 优化器:主要做的就是重写查询、决定表的读取顺序、选择合适的索引等工作 。
Mysql有以下存储引擎:
- InnoDB(默认)
- MyISAM
- 其他非常用引擎
- Archive
- Blackhole
- CSV引擎
- Federated引擎
- Memory引擎
- Merge引擎
- NDB集群引擎
- 数据存储:表空间,由一系列的数据文件组成 。存储文件是平台独立的,可以任意复制到各操作系统
- 事务:支持MVCC和实现了间隙锁来防止幻读
- 索引:基于聚簇索引(主键索引)实现 。二级索引(非主键索引)都是包含了主键索引的
- 性能优化措施:
- 磁盘预读
- 加速读操作的自适应哈希索引
- 插入缓冲区(insert buffer)
【功能】
- 支持:全文索引、压缩、空间函数(GIS)
- 不支持:事务、行级锁、崩溃后无法安全恢复
- 文件:数据文件(.MYD)和索引文件(.MYI)
- 变长行处理:
- 5.0以前:默认能处理4G的数据,指针长度为4个字节,32位
- 5.0:默认能处理256TB的数据,因为指针长度为6个字节
- 所有版本都支持8字节,根据配置项MAX_ROW和MAX_ROW_LENGTH配置,两者相乘得到最终值
- 加锁与并发:表级锁和并发插入(读时可写)
- 修复:
- 人工修复:CHECK TABLE mytable和REPAIR TABKE mytable语句
- 自动修复:myisamchk命令行
- 索引特性:全文索引(基于分词创建),对于BLOB和TEXT,会基于前500个字符创建索引
- 延迟更新索引键(Delayed Key Write):建表时开启DELAY_KEY_WRITE 。修改先写入键缓冲区,等清理缓冲区或关闭表时才会更新索引
- 压缩表:压缩后不可修改,表记录独立压缩
文章插图
推荐阅读
- 详解MySQL兼容性show_compatibility_56参数
- mysql 批量更新的两种方法
- Mysql某个表有近千万数据,CRUD比较慢,如何优化?
- mysql 如何优化left join
- Mysql死锁如何排查?insert on duplicate死锁排查过程分析
- 一文让你搞懂令人脑瓜疼的python编码问题
- Java架构-MYSQL大数据量下的操作与优化
- 一文深度解读苹果 ProRAW 功能
- 微服务架构下:MySQL5.7新特性--官方高可用方案MGR介绍
- mysql数据库中,数据量很大的表,有什么优化方案么?