VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

悲观2PL vs 乐观OCC

功能上的差异归因于对交易完整性的悲观与乐观方法。
基于磁盘的表正在使用悲观方法,这是最常见的数据库方法。

MOT引擎使用乐观的方法

乐观并发控制(OCC)方法可以检测到发生的冲突,并在提交时执行验证检查。
乐观方法的开销较小,通常效率更高,部分原因是在大多数应用程序中事务冲突很少见。悲观方法和乐观方法之间的主要功能差异是,如果发生冲突,则在悲观方法中您需要等待,而在乐观方法中,其中一项交易会失败,需要由客户重试。当执行REPEATABLE READ隔离级别时,功能差异较大,而对于SERIALIZABLE级别,功能差异最大。

悲观并发控制(2PL或两阶段锁定)方法使用锁定来在潜在冲突发生之前将其阻止。语句执行时获取锁,而事务提交后则释放。基于磁盘的行存储使用此方法(增加了MVCC)。
在访问时锁定行以进行读取或写入,并在提交时释放该锁。这些算法需要一些避免死锁的方案。死锁可以通过在等待图中计算周期来检测,也可以通过在TSO [2]中保留时间顺序或通过某些退避方案来避免。在2PL算法中,如果一个事务正在写一行,则其他任何事务都不能访问它;如果正在读取一行,则不允许任何事务写它。

其他方法是ETL
遇到时间锁定(ETL):在ETL中,读取器比较乐观,但是写入器锁定了他们访问的数据。结果,来自不同ETL事务的编写者可以看到对方,并可以决定中止。文献[8]中的经验证明,ETL通过两种方式提高了OCC的性能。首先,它们会及早发现冲突,并且通常会增加事务吞吐量,因为事务不会执行无用的工作,因为通常在提交时发现的冲突必须中止至少一个事务才能解决。其次,遇到时间锁定使我们能够有效地处理写入后读取(RAW),而无需昂贵或复杂的机制。

如[29,1]所示,OCC是大多数工作负载中最快的选择,这也在我们初步研究阶段就可以看到的。一个原因是,当每个内核执行多个线程时,交换线程可能会锁定,特别是在交互模式下。另外,悲观算法涉及死锁检测,死锁检测会带来开销,并且通常使用读写锁,其效率不如标准自旋锁。我们选择了Silo[28],因为它比其他现有选项(例如TicToc[31])更简单,同时对于大多数工作负载都保持相同的性能。ETL有时比OCC更快,但与仅在提交中中止的OCC相比,它引入了虚假中止,这会使用户感到困惑。

参考资料
[1] Appuswamy, R., Anadiotis, A., Porobic, D., Iman, M., and Ailamaki, A. Analyzing the impact of system architecture on the scalability of OLTP engines for high-contention workloads. PVLDB 11, 2 (2017), 121–134.
[2] Bernstein, P. A., and Goodman, N. Concurrency control in distributed database systems. ACM Comput. Surv. 13, 2 (1981), 185–221.
[3] Felber, P., Fetzer, C., and Riegel, T. Dynamic performance tuning of word-based software transactional memory. In Proceedings of the 13th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, PPOPP 2008, Salt Lake City, UT, USA, February 20-23, 2008 (2008), pp. 237–246.
[4] Tu, S., Zheng, W., Kohler, E., Liskov, B., and Madden, S. Speedy transactions in multicore in-memory databases. In Proceedings of the Twenty-Fourth ACM Symposium on Operating Systems Principles (New York, NY, USA, 2013), SOSP ’13, ACM, pp. 18–32.
[5] Yu, X., Bezerra, G., Pavlo, A., Devadas, S., and Stonebraker, M. Staring into the abyss: An evaluation of concurrency control with one thousand cores. Proc. VLDB Endow. 8, 3 (Nov. 2014), 209–220.