Developer's Responsibility or Database's Responsibility? Rethinking Concurrency Control in Databases

Developer's Responsibility or Database's Responsibility? Rethinking Concurrency Control in Databases
复制标题

DOI:
--
复制
发表时间:
2023
期刊:
--
影响因子:
--
通讯作者:
Chao-Wei Cheng;Mingzhe Han;Nuo Xu;Spyros Blanas;Michael D. Bond;Yang Wang
Chao-Wei Cheng;Mingzhe Han;Nuo Xu;Spyros Blanas;Michael D. Bond;Yang Wang
中科院分区:
其他
文献类型:
--
作者:
Chao-Wei Cheng;Mingzhe Han;Nuo Xu;Spyros Blanas;Michael D. Bond;Yang Wang

文献摘要

相似文献

许多数据库应用程序在较弱的隔离级别下执行事务,例如R read C committed。这通常会导致并发错误,看起来就像多线程程序中的竞争条件。虽然这个问题是众所周知的,但如何解决这个问题的哲学却各不相同,从使一个可编程的数据库更快到使用较弱的隔离性和并发性错误的后果。本文研究了结果、根本原因以及开发人员如何修复数据库应用程序中的93个实际并发性错误。我们观察到,一方面,开发人员仍然倾向于防止这些漏洞的发生。另一方面,数据库系统没有为这项任务提供足够的支持,因此开发人员经常使用特别的解决方案来修复这些错误,这些解决方案通常很复杂,而且不完全正确。我们进一步讨论了在数据库实现中改进并发控制的研究机会。
Many database applications execute transactions under a weaker isolation level, such as R EAD C OMMITTED . This often leads to concurrency bugs that look like race conditions in multi-threaded programs. While this problem is well known, philosophies of how to address this problem vary a lot, ranging from making a S ERI - ALIZABLE database faster to living with weaker isolation and the consequence of concurrency bugs. This paper studies the consequences, root causes, and how developers fix 93 real-world concurrency bugs in database applications. We observe that, on the one hand, developers still prefer preventing these bugs from happening. On the other hand, database systems are not providing sufficient support for this task, so developers often fix these bugs using ad-hoc solutions, which are often complicated and not fully correct. We further discuss research opportunities to improve concurrency control in database implementations.