> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 什么是列式数据库？

> 本页介绍列式数据库是什么

export const Image = ({img, alt, size}) => {
  return <Frame>
      <img src={img} alt={alt} />
    </Frame>;
};

列式数据库会将每一列的数据独立存储。这样一来，在任何一次查询中，只需从磁盘读取用到的那些列的数据。相应的代价是，涉及整行的操作成本会更高。列式数据库也称为面向列的数据库管理系统。ClickHouse 就是这类系统的典型示例。

列式数据库的主要优势包括：

* 在包含很多列的表中，查询往往只需使用其中少数几列。
* 针对海量数据的聚合查询。
* 按列进行数据压缩。

下面展示了在生成报表时，传统面向行系统与列式数据库之间的区别：

**传统面向行**

<Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/0xkAyEEn8ANRFZGQ/images/row-oriented.gif?s=65d32283890f54b87398e0bddf1a0ec3" alt="传统面向行数据库" size="md" border width="630" height="258" data-path="images/row-oriented.gif" />

**列式**

<Image img="https://mintcdn.com/private-7c7dfe99-fix-nav-issues/ddNWBC5mE_w-syUp/images/column-oriented.gif?s=43234d1f2e731088ce5e59de023a4d00" alt="列式数据库" size="md" border width="630" height="258" data-path="images/column-oriented.gif" />

对于分析型应用而言，列式数据库通常是更优的选择，因为它允许你在表中预留很多列以备不时之需，同时在执行读取查询时，无需为未使用的列付出额外成本 (而传统 OLTP 数据库在查询时会读取全部数据，因为数据是按行而非按列存储的) 。面向列的数据库专为大数据处理和数据仓库场景而设计，通常可以借助由低成本硬件构成的分布式集群实现原生扩展，从而提升吞吐量。ClickHouse 通过结合 [Distributed](/zh/reference/engines/table-engines/special/distributed) 和 [Replicated](/zh/reference/engines/table-engines/mergetree-family/replication) 表来实现这一点。

如果你想深入了解列式数据库的发展历史、它与面向行数据库的区别，以及列式数据库的使用场景，请参阅 [列式数据库指南](https://clickhouse.com/engineering-resources/what-is-columnar-database)。
