MySQL数据库相关(二)

第二部分主要是讨论MySQL的主流引擎和前文中提到的MVCC(多版本并发控制)的工作原理。
其中MVCC实现了对读操作的优化,值得学习。

4.MySQL的主流存储引擎
InnoDB引擎
MyISAM引擎

支持的功能事务行级锁外键
InnoDB(默认)
MyISAM

MyISAM强调性能,是5.1及之前版本的默认引擎。

5.MVCC(多版本并发控制)优化读操作
MVCC是用来保证隔离性的。
innodb会为每一行添加两个字段,分别表示该行创建的版本和删除的版本号,填入的是事务的版本号,这个版本号随着事务的创建不断递增。

以实际的CRUD操作为例:
CRUD
C:Create 增加对应CREATE TBL …; ADD TBL IN (…) VALUES (…)
R:Retrieve查询SELECT * from TBL
U:Update修改UPDATE TBL ..SET …
D:Delete删除 DELETE FROM TBL WHERE ….
select:满足以下两个条件innodb会返回该行数据:
(1)该行的创建版本号小于等于当前版本号,用于保证在select操作之前所有的操作已经执行落地。
(2)该行的删除版本号大于当前版本或者为空。删除版本号大于当前版本意味着有一个并发事务将该行删除了。
insert:将新插入的行的创建版本号设置为当前系统的版本号。
delete:将要删除的行的删除版本号设置为当前系统的版本号。
update:不执行原地update,而是转换成insert + delete。将旧行的删除版本号设置为当前版本号,并将新行insert同时设置创建版本号为当前版本号。
其中,写操作(insert、delete和update)执行时,需要将系统版本号递增。
由于旧数据并不真正的删除,所以必须对这些数据进行清理,innodb会开启一个后台线程执行清理工作,具体的规则是将删除版本号小于当前系统版本的行删除,这个过程叫做purge。
MVCC在可重复读和提交读两个隔离级别下工作,其他两个都和MVCC不兼容,因为未提交读总是读取最新数据行,而可串行化则会对所有读取行加锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值