p37~p69.
架构
MySQL服务器分3层.
第1层提供连接功能, 有连接处理, 授权认证, 安全等;
第2层提供核心服务, 包括查询解析, 分析, 优化, 缓存以及所有的内置函数(如日期, 时间, 数学和加密函数), 所有的跨存储引擎的功能都在这一层实现: 存储过程, 触发器, 视图等.
第3层包含了存储引擎, 复杂MySQL钟数据的存储和提取. 第2层通过API与存储引擎进行通信. API包含几十个底层函数, 用于执行诸如开始一个事务
或者根据主键提取一行记录
每个客户端连接都会在服务器进程钟拥有一个线程, 这个连接的查询只会在这个单独的线程中执行.
锁
读锁是共享的, 多个客户可以在同一时刻读同一资源. 写锁是排它的, 会阻塞其他的写锁和读锁.
锁分表锁和行锁. MyISAM引擎不支持行锁, InnoDB和XtraDB支持行锁.
事务
ACID, 原子性(atomicity), 一致性(consistency), 隔离性(isolation), 持久性(durability).
隔离级别分4级, 从低到高, READ UNCOMMITTED(未提交读), READ COMMITTED(提交读), REPEATABLE READ(可重复读, 默认), SERIALIZABLE(可串行化).
存储引擎
存储引擎类型是表级别的, 对于一个库(schema)中的表, 可以使用不同的存储引擎.
自带的InnoDB和MyISAM. MyISAM有几个重大的缺陷, 不支持事务, 没有行级锁, 崩溃后无法安全恢复. 一般不推荐使用MyISAM. 现在MySQL5.6支持的存储引擎如下:
MySQL的发展历史
MySQL5.0支持视图, 触发器, 存储过程, 存储函数.
MySQL5.1是sun收购MySQL AB后发布的首个版本.
MySQL5.5是Oracle收购sun以后发布的首个版本. 之后MySQL的创始人Michael Widenius开发了MariaDB的研发, 这是MySQL的GPL开源版本. Maria5.5版本之前的版本几乎和MySQL是一样的.
还有一个知名的版本是"Percona Server", 包含自己研发的XtraDB存储引擎, 参考Percona.