InnoDB存储引擎

存储引擎基于表而不基于数据库

innodb的设计目标

为在线事务处理(Online Transaction Processing)的应用而生

innodb为什么性能这么好?

innodb使用mvcc来获得高并发性

what‘s MVCC?

名词解释

Multi-Version Concurrency Control(多版本并发控制)

一般用在何处?

  1. 用在数据库中以实现数据库的并发访问

  2. 用在代码中以实现事务内存

通俗的话

如果有人从数据库中读数据的同时,另一个人在写入数据。读数据的人不会看到“半写”或者不一致的数据

原理:

修改数据时,不直接用新数据覆盖旧数据,而是讲旧数据标记为过时的(obsolete)
并在另一处增加新版本的数据

好处

避免了删除操作在内存和磁盘造成的空洞的开销

坏处

需要系统周期性的整理,删除过时的数据

特点:

  1. mvcc数据库读与写相互隔离,不需要加锁

  2. 读写并存时,写操作会根据数据库当前的状态创建一个新版本,并发的读会依旧访问旧版本的数据

除了mvcc还有哪些并发控制方法

加锁,让所以读者等待写者工作完成,最简单

总结

mvcc就是用同一份数据临时保存多版本的方式,实现并发控制

并发例子

两个事务1、2并发写

事务对对象做写操作之前,会先读

时间线 事务1 事务2
0
1
2
3 写 --->事务退出重新开始
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。