MySQL技术内幕学习笔记(一):MySQL体系结构和存储引擎
第一章 MySQL体系结构和存储引擎
MySQL能保证在各平台上的物理体系结构的一致性。
定义数据库和数据库实例
数据库:物理操作系统文件或其他形式文件类型的集合
实例:MySQL数据库由后台进程以及一个共享内存区组成
数据库实例真正用于操作数据库文件的,一般来说一个实例对应一个数据库,在集群情况下,一个数据库被多个实例使用。
MySQL体系结构
- 连接池组件
- 管理服务和工具组件
- SQL接口组件
- 查询分析器组件
- 优化器组件
- 缓冲(cache)组件
- 插件式存储引擎:是基于表的,而不是基于数据库
- 物理文件
存储引擎
分为官方存储引擎和第三方存储引擎,InnoDB本身也是第三方存储引擎,后被MySQL收购了。
InnoDB存储引擎
- 支持事务,其设计目标主要面向在线事务处理(OLTP)的应用,特点是行锁设计、支持外键,并支持类似于Oracle的非锁定锁
- 将数据放在一个逻辑的表空间里,这个表空间就像黑盒一样由引擎自身管理
- 通过使用多版本并发控制(MVCC: multiple version concurrency control)来获得高并发性,并且实现了对SQL标准的4种隔离级别,默认为repeatable(可重复读)
- 对于表中的数据采取聚集(clustered)的方式,按主键的顺序进行存放
- 从MySQL5.5.8之后作为默认存储引擎
MyISAM存储引擎
- 不支持事务,表锁设计,支持全文索引,主要面向一些OLAP(online analytical processing)数据库应用
- MySQL5.58之前的默认存储引擎
- 存储引擎表由MYD与MYI组成,MYD存放数据文件,MYI存放索引文件
- 缓冲池只缓冲索引文件,不缓冲数据文件
各个存储引擎之间的比较
主要关注InnoDB与MYISAM即可