一、Mysql逻辑架构
引用自《高性能Mysql》
二、并发控制
- 读写锁:读锁是共享的,写锁是排他的,会阻塞其他的写锁和读锁。
- 锁粒度:表锁、行级锁
三、事务
- 事务(ACID特性):原子性、一致性、隔离性、持久性
- 隔离级别
Read uncommitted未提交读
事务中的修改,即使没有提交,其他事务也是可见的。
事务读取未提交的数据叫脏读。
Read committed提交读
事务只能看到其他事务已经提交的修改。
这个事务在其他事务提交前后的查询结果可能不一致叫不可重复读。
Repeatable read可重复读-Mysql默认级别
保证同一个事务多次读取的数据一致。
当某个事物读取某个范围的记录时,另一个事务往这个返回又插入了一条记录,当之前那个事务再次读取时,会产生幻读。
Serializable可串行化
强制事务串行执行。
- 多个事务同事锁定一个资源时,会导致死锁。
死锁后可以部分或全部回滚其中一个事务来打破死锁,应用程序在设计时可以考虑重新执行回滚的事务。
- 事务日志
数据的修改记录到事务日志并持久化,但数据本身还没写会磁盘时,系统崩溃,存储引擎重启时可以恢复这部分数据。