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: 崔一丁 |