当前位置:Gxlcms > 数据库问题 > Hekaton: SQL Server’s Memory-Optimized OLTP Engine

Hekaton: SQL Server’s Memory-Optimized OLTP Engine

时间:2021-07-01 10:21:17 帮助过:47人阅读

因为他讲了绝大部分上面提到的技术,latch-free的数据结构,MVCC,基于内存的索引实现,关于提升编译和执行效率那块,我直接跳过了

 

剩下关键的,就是如何保证MVCC是serializable

MVCC一般都提供SI的隔离性,SI不是serializable的

因为serializable要求,读写在逻辑上同时发生

而SI明显不是,读是在产生Snapshot的时候,写是在commit的时候

那如果要做到serializable,方法也很直觉,那就是虽然读写不同时,但是如果可以保证,我在commit的时候,之前读到的内容没有改变,那就等同于读写同时

所以只要做到,可重复读,无幻读

技术图片

 

这个过程,就是乐观并发控制中的,validation的过程,这个详细可以看andy的数据库课程

关键是,你要记录下,read set和scan set,然后在commit的时候,去check这些读过的数据

技术图片

 

 

后面两个问题,是内存数据库特有的

第一个是持久化,内存的数据,不能说丢就丢了

持久化的方法,首先,Transaction log,这个和wal有些不同,是在commit的时候去记录一条log,但是如果要提升效率,还是要batch commit

技术图片

 

 再者,就是checkpoints,缩短恢复周期

技术图片

 

第二个是GC,回收内存,不能内存就爆了

GC比较有参考意义的是,它如何判断哪些version可以被过期了

技术图片

技术图片

 

 

这篇文章的参考意义,在于他把内存数据库的方向,和碰到的问题还是说的比较清晰的

 

Hekaton: SQL Server’s Memory-Optimized OLTP Engine

标签:partition   存在   nap   高效   内存数据   很多   server   判断   重复   

人气教程排行