列式存储比传统的行式存储,在数据仓库、决策支持和商业智能应用等方面的分析工作负载上执行的效率要高很多,因为列式存储对于只读查询来说是更有效的I/O,因为它们只需要从磁盘(或从内存)读取查询所访问的属性。
This simplistic view leads to the assumption that one can obtain the performance benefits of a column-store using a row-store:
either by vertically partitioning the schema, or by indexing every column so that columns can be accessed independently. In this paper,we demonstrate that this assumption is false.
所以有一种假设(通过垂直分区模式,或通过列索引,以便可以独立访问列,得到的使用行式存储方式的) 列式存储,将会有更好的性能。本文我们将证明这种假设是错误的。我们将这种缓慢性归因于高元组重建成本,以及在垂直分区表中的每个元组开销。
我们使用列式存储和行式存储比较,梳理这些差异,展示了各种面向列查询执行技术的性能的影响,包括矢量化查询处理、压缩和本文中介绍的一种新的连接算法(无形连接)。我们得出结论,虽然行式存储不可能实现列式存储的一些性能优势,但必须对存储层和查询执行器进行更改,以完全获得面向列的方法的好处,列式存储性能高的原因是 后期的具体化和 查询 排序后的数据 性能高。