mysql体系结构

141 阅读2分钟

今天主要就MySQL的整体结构做下梳理,整体内容如下:

整体结构

image.png

  1. Connectors 接入方 支持协议很多

  2. Management Serveices & Utilities: 系统管理和控制工具 例如:备份恢复,mysql复制集群等

  3. Connection Pool 连接池:管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求

  4. SQL Interface SQL接口:接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface

  5. Parser: 解析器,SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的。

  6. Optimizer: 查询优化器,SQL语句在查询之前会使用查询优化器对查询进行优化

  7. Cache和Buffer(高速缓存区): 查询缓存,如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

  8. pluggable storage Engines 插件式存储引擎。存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。 Mysql的存储引擎是插件式的。

  9. file system
    文件系统, 数据、日志(redo,undo)、索引、错误日志、查询记录、慢查询等

运行时机图

image.png

索引

索引定义: 索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构

索引意义: 索引能极大的减少存储引擎需要扫描的数据量

 索引可以把随机IO变成顺序IO

 索引可以帮助我们在进行分组、排序等操作时,避免使用临时表

为什么mysql是B+ TREE

二叉查找树 平衡二叉树
多路平衡查找树 加强版多路平衡查找树

详细了解上面的数据结构大家可以参见下面帖子 www.cnblogs.com/vianzhang/p…

索引机制的一些原则

最左匹配原则 选择性最好(离散性最好)原则 最小空间原则