MYSQL体系结构
1.连接层
一些客户端和链接服务,包含本地sock通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案
2.服务层
第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部
分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如 过程、函数等。在该层,服务器会解
析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索引等,
最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存,如果缓存空间足够大,
这样在解决大量读操作的环境中能够很好的提升系统的性能。
3.引擎层
存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式 。存储引擎是基于表的,而不是
基于库的,所以存储引擎也可被称为表类型。
4.文件层
数据存储层, 主要是将数据(如: redolog、undolog、数据、索引、二进制日志、错误日志、查询
日志、慢查询日志等)存储在文件系统之上,并完成与存储引擎的交互。
InnoDB
特点
DML操作遵循ACID模型,支持事务;
行级锁,提高并发访问性能;
支持外键FOREIGN KEY约束,保证数据的完整性和正确性;
xxx.ibd作为文件
索引
帮助MySQL高效获取数据的数据结构,使用B+树实现,上层节点储存指针,最后一层节点储存指针和数据。
索引的分类
主键索引:针对于表中主键创建的索引默认自动创建, 只能有一个关键字为PRIMARY
唯一索引:避免同一个表中某数据列中的值重复可以有多个关键字为UNIQUE
常规索引:快速定位特定数据可以有多个
全文索引:全文索引查找的是文本中的关键词,而不是比较索引中的值可以有多个关键字为FULLTEXT
聚集索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据必须有,而且只有一个
二级索引:将数据与索引分开存储,索引结构的叶子节点关联的是对应的主键可以存在多个