Paper Reading 是 PingCAP 的线上活动之一。在这里我们会带领大家一起阅读数据库领域经典的论文,欢迎大家参与到线上直播与我们一起讨论。

往期回顾
Date Speaker Introduction
2019/12/09 方祝和

SIMD 是一种单指令多数据的指令集,普遍存在于当前的CPU架构中。它能够加快 in-cache 数据的处理,但是在 out-of-cache 的大数据集上失效。本文针对这个问题提出 IMV,减少 SIMD 在大数据集上的 cache misses。

2019/10/29 俞腾秋

这篇论文使用流行的商业和开源数据库系统作为例子,着重论述(关系型)数据库系统的架构。包含对进程模型、并行架构的对比,以及数据库特有的组件的介绍。

2019/10/09 黄文俊

窗口函数是广泛应用的一种分析型函数,能够优雅地表达许多有用的查询。这篇论文首先介绍了窗口函数的概念,然后对其常见的实现方式作了详细的讨论,并提出了一种能够充分利用多处理器优势的算法。

2019/09/18 唐明华

在传统的 Paxos 算法中,每个阶段都需要过半节点的同意。这篇论文证明了只要 Paxos 在两个阶段间同意的节点有交集,即可保证正确性。因此可以通过增加第一阶段的同意人数(称为 quorum),减少第二阶段的 quorum,来提高系统的写入性能。

2019/09/12 崔一丁

利用 DP 处理 join order 是非常经典的手法。作者在以往工作的基础上,设计了一种新的 DP 算法,来处理 Hyper Graph 的情况

2019/09/04 张艺文

在持续的 write 密集型生产压力下,LSM-tree KV 存储系统的长尾延迟明显。针对这种情况,这篇论文提出了一种 I/O Scheduler 的策略,对 LSM-Tree 的 flush 和不同层的 compaction 进行优先级和抢占式调度,以优化前台写入的延迟表现。

2019/08/27 吴圣辉

本篇论文介绍了关于关联子查询去关联的内容,hyper-db 可以对任意形式的关联子查询进行去关联化。这篇论文详细描述了对任意关联子查询进行去关联化的原理。对于各种形式的关联子查询,给出了通用的去关联化的转化公式。

2019/08/22 付旭炜

PostgreSQL 是正式生产的数据库中第一个采用 SSI(Serializable Snapshot Isolation) 隔离级别的。这篇文章介绍了 PostgreSQL 如何实现 SSI,并且介绍了它在 SSI 隔离级别下,对只读事务和长久进行的事务的优化。 Crdb 的 SSI 也参考了这篇论文。

2019/08/13 张原嘉

本篇论文介绍了为写入优化的存储引擎 X-Engine,优化包括更先进的分层存储架构(LSM-tree),硬件(FPGA)加速 Compaction,事务异步写入,多阶段流水线执行等优化。

2019/08/08 周振靖

这是一篇探讨事务隔离级别的经典论文。这篇论文主要内容是指出 ANSI 标准中对四种隔离级别的定义的问题,对这些定义进行了修正,同时也入了包括 Snapshot Isolation 在内的几种新的隔离级别。这篇论文是理解事务隔离级别的非常值得阅读的学习资料。

2019/08/07 刘卓珉

论文介绍了一种有效的估算多表 join 的 cardinality 的方法,这个方法主要用了超图的概念,将多个带有主键或外键属性的 join keys 当作超边,以适当的方法估算 join 结果集大小,这个方法不会导致估算的结果比实际结果更小,也有效的收束了估算结果的上届。

2019/07/25 邓力铭

论文讨论了传统 DBMS IPC 低的问题,并给出了一种超流水线式的查询引擎设计,大大提高了执行引擎在 AP 场景下 IPC 指数。其设计的 X-100 查询引擎采用向量化计算模型,尽可能的利用现代 CPU 的超流水线优化,在 TPC-H 下表现出较为理想的性能。

2019/07/16 王聪

这篇论文给出了一种分布式 KV 存储引擎的实现方式,对数据局部性(适合 scan)和离散索引(适合 get/put)做到兼具,同时介绍了基于该理论的存储系统 TellStore,在最后的章节中展示了 benchmark 测试结果,结果证明该系统在 KV、分析型和混合场景中都表现了不错的性能。

2019/05/20 陶新野

现代存储引擎 LSM-Tree 在提供高效追加写的同时引入了额外的读写放大和 compaction 负担。中科大的这篇论文在键值分离 LSM-Tree WiscKey 的基础上通过哈希分区以及冷热分离的方式进一步提高性能,其设计决定对 TiKV 内部的键值分离实践提供了启发。

2019/05/06 唐明华

在分布式共识算法的实现中通常需要将复制的日志同步持久化,因此带来了更高的延时。这篇论文提出了根据情况动态决定是否将日志持久化,与始终只写入内存的系统相比,大大提高了持久性和可用性。

2019/04/24 张原嘉

本篇论文介绍了一系列 Oracle 关系型数据库中,正在使用的基于代价的转化规则,以及作用这些规则的框架,包括为什么需要这套框架,以及框架中运用的一些在搜索空间中迭代用的算法。

2019/04/15 梁宇彤

论文介绍了一种新的乐观并发控制算法 TicToc,通过在数据中携带时间戳,并使用它们来惰性地计算每个事务的 commit ts,使得部分在传统算法下需要回滚的事务,可以得到正确执行。同时,TicToc 还可以有效解决传统单点授时的性能瓶颈以及可扩展性差的问题。

2019/03/20 姚珂男

本篇论文介绍了一种自适应执行器算子,可以自动根据数据和访问条件调整算子行为,在 IndexScan 和 TableScan 之间摇摆,降低优化器估算误差带来的执行效率影响。

2019/03/06 施闻轩

本文介绍了一种方法能在不需要使用中心授时系统的情况下保障 Snapshot Isolation 隔离级别。

2019/02/22 屈鹏

本篇论文介绍了一个为 SCM 优化的 B-Tree,内部节点全部放在内存中,叶子节点放在 SCM 设备中,不需要 WAL 便可实现树的变更操作的原子性和一致性。其实现细节中的思想,可能在 SCM 设备普及之后应用广泛。

2019/02/20 谢海滨

在 TiDB 2.1.5 版本中,我们引入 skyline pruning 来优化 TiDB 的索引选择,增加了简单查询的稳定性。这篇文章详细的介绍了 skyline pruning 背后的思想,实现方式以及应用场景。

2019/01/29 崔一丁

本篇论文介绍了如何比较完整在查询优化中维护函数依赖,为一些高级优化手段提供可能性。

Info Introduction
Date:
2019/12/09

SIMD 是一种单指令多数据的指令集,普遍存在于当前的CPU架构中。它能够加快 in-cache 数据的处理,但是在 out-of-cache 的大数据集上失效。本文针对这个问题提出 IMV,减少 SIMD 在大数据集上的 cache misses。

Speaker:
方祝和
Date:
2019/10/29

这篇论文使用流行的商业和开源数据库系统作为例子,着重论述(关系型)数据库系统的架构。包含对进程模型、并行架构的对比,以及数据库特有的组件的介绍。

Speaker:
俞腾秋
Date:
2019/10/09

窗口函数是广泛应用的一种分析型函数,能够优雅地表达许多有用的查询。这篇论文首先介绍了窗口函数的概念,然后对其常见的实现方式作了详细的讨论,并提出了一种能够充分利用多处理器优势的算法。

Speaker:
黄文俊
Date:
2019/09/18

在传统的 Paxos 算法中,每个阶段都需要过半节点的同意。这篇论文证明了只要 Paxos 在两个阶段间同意的节点有交集,即可保证正确性。因此可以通过增加第一阶段的同意人数(称为 quorum),减少第二阶段的 quorum,来提高系统的写入性能。

Speaker:
唐明华
Date:
2019/09/12

利用 DP 处理 join order 是非常经典的手法。作者在以往工作的基础上,设计了一种新的 DP 算法,来处理 Hyper Graph 的情况

Speaker:
崔一丁
Date:
2019/09/04

在持续的 write 密集型生产压力下,LSM-tree KV 存储系统的长尾延迟明显。针对这种情况,这篇论文提出了一种 I/O Scheduler 的策略,对 LSM-Tree 的 flush 和不同层的 compaction 进行优先级和抢占式调度,以优化前台写入的延迟表现。

Speaker:
张艺文
Date:
2019/08/27

本篇论文介绍了关于关联子查询去关联的内容,hyper-db 可以对任意形式的关联子查询进行去关联化。这篇论文详细描述了对任意关联子查询进行去关联化的原理。对于各种形式的关联子查询,给出了通用的去关联化的转化公式。

Speaker:
吴圣辉
Date:
2019/08/22

PostgreSQL 是正式生产的数据库中第一个采用 SSI(Serializable Snapshot Isolation) 隔离级别的。这篇文章介绍了 PostgreSQL 如何实现 SSI,并且介绍了它在 SSI 隔离级别下,对只读事务和长久进行的事务的优化。 Crdb 的 SSI 也参考了这篇论文。

Speaker:
付旭炜
Date:
2019/08/13

本篇论文介绍了为写入优化的存储引擎 X-Engine,优化包括更先进的分层存储架构(LSM-tree),硬件(FPGA)加速 Compaction,事务异步写入,多阶段流水线执行等优化。

Speaker:
张原嘉
Date:
2019/08/08

这是一篇探讨事务隔离级别的经典论文。这篇论文主要内容是指出 ANSI 标准中对四种隔离级别的定义的问题,对这些定义进行了修正,同时也入了包括 Snapshot Isolation 在内的几种新的隔离级别。这篇论文是理解事务隔离级别的非常值得阅读的学习资料。

Speaker:
周振靖
Date:
2019/08/07

论文介绍了一种有效的估算多表 join 的 cardinality 的方法,这个方法主要用了超图的概念,将多个带有主键或外键属性的 join keys 当作超边,以适当的方法估算 join 结果集大小,这个方法不会导致估算的结果比实际结果更小,也有效的收束了估算结果的上届。

Speaker:
刘卓珉
Date:
2019/07/25

论文讨论了传统 DBMS IPC 低的问题,并给出了一种超流水线式的查询引擎设计,大大提高了执行引擎在 AP 场景下 IPC 指数。其设计的 X-100 查询引擎采用向量化计算模型,尽可能的利用现代 CPU 的超流水线优化,在 TPC-H 下表现出较为理想的性能。

Speaker:
邓力铭
Date:
2019/07/16

这篇论文给出了一种分布式 KV 存储引擎的实现方式,对数据局部性(适合 scan)和离散索引(适合 get/put)做到兼具,同时介绍了基于该理论的存储系统 TellStore,在最后的章节中展示了 benchmark 测试结果,结果证明该系统在 KV、分析型和混合场景中都表现了不错的性能。

Speaker:
王聪
Date:
2019/05/20

现代存储引擎 LSM-Tree 在提供高效追加写的同时引入了额外的读写放大和 compaction 负担。中科大的这篇论文在键值分离 LSM-Tree WiscKey 的基础上通过哈希分区以及冷热分离的方式进一步提高性能,其设计决定对 TiKV 内部的键值分离实践提供了启发。

Speaker:
陶新野
Date:
2019/05/06

在分布式共识算法的实现中通常需要将复制的日志同步持久化,因此带来了更高的延时。这篇论文提出了根据情况动态决定是否将日志持久化,与始终只写入内存的系统相比,大大提高了持久性和可用性。

Speaker:
唐明华
Date:
2019/04/24

本篇论文介绍了一系列 Oracle 关系型数据库中,正在使用的基于代价的转化规则,以及作用这些规则的框架,包括为什么需要这套框架,以及框架中运用的一些在搜索空间中迭代用的算法。

Speaker:
张原嘉
Date:
2019/04/15

论文介绍了一种新的乐观并发控制算法 TicToc,通过在数据中携带时间戳,并使用它们来惰性地计算每个事务的 commit ts,使得部分在传统算法下需要回滚的事务,可以得到正确执行。同时,TicToc 还可以有效解决传统单点授时的性能瓶颈以及可扩展性差的问题。

Speaker:
梁宇彤
Date:
2019/03/20

本篇论文介绍了一种自适应执行器算子,可以自动根据数据和访问条件调整算子行为,在 IndexScan 和 TableScan 之间摇摆,降低优化器估算误差带来的执行效率影响。

Speaker:
姚珂男
Date:
2019/03/06

本文介绍了一种方法能在不需要使用中心授时系统的情况下保障 Snapshot Isolation 隔离级别。

Speaker:
施闻轩
Date:
2019/02/22

本篇论文介绍了一个为 SCM 优化的 B-Tree,内部节点全部放在内存中,叶子节点放在 SCM 设备中,不需要 WAL 便可实现树的变更操作的原子性和一致性。其实现细节中的思想,可能在 SCM 设备普及之后应用广泛。

Speaker:
屈鹏
Date:
2019/02/20

在 TiDB 2.1.5 版本中,我们引入 skyline pruning 来优化 TiDB 的索引选择,增加了简单查询的稳定性。这篇文章详细的介绍了 skyline pruning 背后的思想,实现方式以及应用场景。

Speaker:
谢海滨
Date:
2019/01/29

本篇论文介绍了如何比较完整在查询优化中维护函数依赖,为一些高级优化手段提供可能性。

Speaker:
崔一丁