大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。
- Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
- 存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎,不同的存储引擎共用一个 Server 层,现在最常用的储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。
InnoDB支持ACID事务,其设计目标主要是面向在线事务处理OLTP,有着行锁设计、支持外键、非锁定读等特点,同时,InnoDB使用了MVCC来获得高并发性,并实现了读未提交READ UNCOMMITTED、读提交READ COMMITTED、可重复读REPEATABLE READ及串行化SERIALIZABLE,对于表中的数据,InnoDB采用了聚集(clustered)的方式进行存储。
除了InnoDB引擎之外,MyISAM引擎也是比较常用的,但是他不支持事务、表锁设计,但是支持全文索引,所以其主要面向一些OLAP在线分析处理数据库应用,除此之外,MyISAM引擎另一个与众不同的地方是它的缓存池只缓存索引文件,而不是数据文件
本专栏的学习主要围绕InnoDB展开