中文

基于CCBench的内存数据库并发控制协议分析(扩展版)

数据库 2021-08-19 v2

摘要

本文提出又一个并发控制分析平台CCBench。CCBench支持七种协议(Silo、TicToc、MOCC、Cicada、SI、带无锁SSN的SI、2PL)和七种通用优化方法,并可配置七个工作负载参数。我们使用多种工作负载参数和224线程对这些协议和优化方法进行了分析。以往研究聚焦于线程可扩展性,未探索此处所分析的空间。我们基于三个性能因素对优化方法进行分类:CPU缓存、冲突延迟和版本生命周期。使用CCBench和224线程的分析得出了六条见解。(I1)即便没有L3缓存缺失,只读工作负载下乐观并发控制协议性能也会随基数增大而迅速下降。(I2)借助不可见读优化,Silo在某些写密集型工作负载上可优于TicToc。(I3)应对冲突的两种策略(等待与不等待)的有效性视情况而定。(I4)若发生并发事务中断,OCC会两次或多次读取同一记录,从而提升性能。(I5)混合不同实现方式不利于深入分析。(I6)即便最先进的垃圾回收方法,若工作负载中混入单个长事务,也无法提升多版本协议性能。基于I4,我们定义了读阶段扩展优化,即在读阶段人为加入延迟。基于I6,我们定义了激进垃圾回收优化,即连可见版本也一并回收。CCBench的代码及本文所有数据均已发布于GitHub。

关键词

引用

@article{arxiv.2009.11558,
  title  = {An Analysis of Concurrency Control Protocols for In-Memory Databases with CCBench (Extended Version)},
  author = {Takayuki Tanabe and Takashi Hoshino and Hideyuki Kawashima and Jun Nemoto and Masahiro Tanaka and Osamu Tatebe},
  journal= {arXiv preprint arXiv:2009.11558},
  year   = {2021}
}

备注

A short version is accepted at VLDB 2020 (PVLDB Volume 13, Issue 13). Code is at https://github.com/thawk105/ccbench