引言
在上一篇博客前面的MOT概述中,确定了接下来的研究方向。本篇博客将会开始这个系列的第二个目标——对SILO并发控制的解析 Silo来自Stephen Tu等人在计算机顶级会议SOSP13上发表的Speedy Transactions in Multicore In-Memory Databases (mit.edu),读者可以点击链接阅读原文,以便获取最准确的解释.
一、SILO并发控制算法
“Silo” 是一个并发控制算法和架构,旨在提高多核处理器上数据库管理系统的性能和可伸缩性。Silo的一个重要特征是将事务标识符(Transaction ID,TID)以分散的方式分配给不同的处理器核心,以减少并发访问共享资源时的竞争和瓶颈。
以下是Silo分散分配TID的关键思想和工作原理:
-
分散分配TID:在Silo中,每个处理器核心都被分配一个独立的TID生成器。这个生成器负责生成该核心执行的事务的唯一标识符。这种分散方式确保了不同核心之间的TID不会冲突,因为每个核心都有自己的TID命名空间。
-
减少竞争:传统的数据库系统通常使用一个中心的TID生成器,这可能成为并发访问的瓶颈,因为多个核心需要竞争获取新的TID。Silo通过分散TID生成,降低了核心之间的竞争,提高了整体性能。
-
原子操作:为了确保TID的唯一性,Silo中的TID生成器通常使用原子操作来分配TID。这确保了不会发生TID冲突。
-
分区数据访问:Silo还倾向于将数据库表按照某种方式划分为不同的分区,每个分区由一个处理器核心负责管理。这样,每个核心通常只需要访问其负责的分区,减少了共享资源的争用。
参考自博客园上的博客MogDB MOT并发控制机制的图片如下
MOT执行事务时的关键技术 图显示了MOT运行事务时候的关键技术,包括以下内容。 (1)私有事务内存用于无锁读写,仅在最终提交时使用锁 (2)低时延,NUMA感知的本地内存 (3)乐观并发控制:数据锁的最小化,低争用 (4)无锁自动清理 (5)