1.MySQL架构
MySQL拥有分层的架构,上层是服务器层的服务和查询执行引擎,下层是存储引擎,真正负责数据的存储和提取。
服务层包含了连接和线程处理,以及大多数MySQL的核心服务,如对SQL的解析、分析、优化和缓存等功能,存储过程、触发器和视图都是在这里实现的。
在MySQL中,实例和数据库往往是一一对应的,我们无法直接操作数据库,而是通过数据库实例来操作数据库文件,可以理解为数据库实例是数据库为上层提供的一个专用于操作的接口。
2.事务的ACID特性
- 原子性:整个事务中的所有操作要么全部提交成功,要么全部失败回滚。
- 回滚通过回滚日志实现,回滚日志中记录了所有操作的逆操作。如果事务T2依赖事务T1,那么T1必须在T2提交之前完成提交操作。
- 一致性
- 隔离性:一个事务所做的修改在最终提交以前,对其他事务是不可见的。MySQL默认的隔离级别是“可重复读”,保证了在同一个事务中多次读取同样记录的结果是一致的。
- 持久性:事务一旦被提交,数据一定会被写入数据库并储存起来。
3.InnoDB存储引擎
InnoDB是MySQL的默认事务型引擎。
InnoDB表是基于聚簇索引建立的,聚簇索引对主键查询有很高的性能。
4.InnoDB的多版本并发控制MVCC
通过在每行记录后面保存两个隐藏的列来实现。
这两列,一个保存行的创建时间,一个保存行的过期时间(删除时间)。
存储的并不是实际的时间值,而是系统版本号。