sql - 列式数据库的预期用途是什么?
问题描述
我有一个关于 Sybase 等列式数据库的问题。我知道当您的操作仅限于单个列并且不跨列时,列式数据库非常快,即没有基于行的过滤?
但大多数查询是两者的组合,过滤一些行,然后聚合一些列。
真的,列式数据库在哪里闪耀?
解决方案
列式数据库绝对可以跨不同列访问数据。通过单独存储列,它们提供了一些基于行的存储所不具备的优势:
- 他们只需要读取在特定查询中访问的列。
- 它们使向表中添加新列变得容易。
- 它们允许使用最适合该列的压缩算法来压缩单个列。
- 它们有时为每一列提供内置索引。
所有这些都可以用来加速SELECT
查询。
列式数据库的一个大问题是插入新行(或删除一行),因为这需要触及所有列。这使得确保 ACID 属性。. . 更棘手。
肯定有一些SELECT
查询在列式数据库中可能不如在其他数据库中执行得那么好。但是它们在提高许多查询的性能方面做得非常好。