数据库必知词汇:列式存储

简介: 数据库表的列式存储(Column-oriented Storage)是优化分析查询性能方面的一个重要因素,因为它将大大降低总体磁盘 I/O 要求并减少需从磁盘加载的数据量。在典型的关系数据库表中,每个行均包含一条记录的字段值。在行式数据库存储中,数据块按顺序存储每个连续列(构成整个行)的值。如果数据块大小小于记录的大小,整个记录的存储可采用多个数据块。如果块大小大于记录的大小,整个记录的存储可能采用 1 个以上的数据块,从而导致磁盘空间的使用低效。

数据库表的列式存储(Column-oriented Storage)是优化分析查询性能方面的一个重要因素,因为它将大大降低总体磁盘 I/O 要求并减少需从磁盘加载的数据量。在典型的关系数据库表中,每个行均包含一条记录的字段值。在行式数据库存储中,数据块按顺序存储每个连续列(构成整个行)的值。如果数据块大小小于记录的大小,整个记录的存储可采用多个数据块。如果块大小大于记录的大小,整个记录的存储可能采用 1 个以上的数据块,从而导致磁盘空间的使用低效。在线事务处理 (OLTP) 应用程序中,大多数事务涉及频繁读取和写入整个记录的所有值,通常一次读取和写入一条记录或几条记录。最终,行式存储已针对 OLTP 数据库进行优化。

使用列式存储,每个数据块可为多个行存储一个列的值。由于每个块可保留相同类型的数据,因此块数据可使用专为列数据类型选择的压缩方案,进一步减少磁盘空间和 I/O。

磁盘上用于存储数据的空间节省将继续存在,以便检索数据并将其存储在内存中。由于许多数据库操作一次只需访问或操作一个或几个列,您可通过仅检索查询实际所需的列的数据块来节省内存空间。其中,OLTP 事务通常涉及少量记录的一个行中的大多数列或所有列,数据仓库查询通常仅读取大量行的几个列。这意味着,读取相同数目的行的相同数目的列字段值需要一小部分 I/O 操作并使用处理行式块所需的内存的一部分。实际上,通过使用具有大量列和行的表,可大幅提高效率。例如,假定一个表包含 100 个列。使用 5 个列的查询仅需读取表中 5% 的数据。对于大型数据库,可为数十亿或甚至数万亿记录实现此节省。相反,一个行式数据库将读取包含 95 个不需要的列的数据块。

列式存储的优点如下:

  • 极高的装载速度(最高可以等于所有硬盘IO 的总和,基本是极限了)
  • 适合大量的数据而不是小数据
  • 实时加载数据仅限于增加(删除和更新需要解压缩Block 然后计算然后重新压缩储存)
  • 高效的压缩率,不仅节省储存空间也节省计算内存和CPU。
  • 非常适合做聚合操作。

列式存储的缺点如下:

  • 不适合扫描小量数据
  • 不适合随机的更新
  • 批量更新情况各异,有的优化的比较好的列式数据库(比如Vertica)表现比较好,有些没有针对更新的数据库表现比较差。
  • 不适合做含有删除和更新的实时操作。

资料来源:
列式存储 https://docs.amazonaws.cn/redshift/latest/dg/c_columnar_storage_disk_mem_mgmnt.html
处理海量数据:列式存储综述(存储篇) https://zhuanlan.zhihu.com/p/35622907
浅析列式数据库的特点 https://searchdatabase.techtarget.com.cn/7-20958/

相关文章
|
4月前
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
201 0
|
7天前
|
存储 druid 分布式数据库
列式存储数据库与超市的关系?
列式存储数据库是一种高效的数据管理方式,类似于超市将相似商品集中摆放。它将相同类型的数据(如年龄、价格)归类存储,便于快速查询和压缩,广泛应用于市场分析、财务报告和健康数据分析等领域。知名产品包括HBase、ClickHouse、Druid和Apache Cassandra等,适合处理大规模数据和实时分析任务。
23 4
|
1月前
|
存储 数据库
快速搭建南大通用GBase 8s数据库SSC共享存储集群
本文介绍如何GBase8s 数据库 在单机环境中快速部署SSC共享存储集群,涵盖准备工作、安装数据库、创建环境变量文件、准备数据存储目录、修改sqlhost、设置onconfig、搭建sds集群及集群检查等步骤,助你轻松完成集群功能验证。
|
23天前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
2月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
45 2
|
3月前
|
存储 SQL 专有云
支持配置审计日志的存储数据库
审计日志作为企业监管平台的重要依据,同时也是“等保三级”认证的必要考察项之一。Dataphin V4.3版本支持设置平台日志的存储数据源,帮助用户快速获取审计日志,同时介绍了不同部署模式的Dataphin如何查看审计日志的方法。
137 5
|
3月前
|
存储 NoSQL 关系型数据库
可以存储文件的数据库有哪些?
可以存储文件的数据库有哪些?
204 6
|
3月前
|
存储 NoSQL 关系型数据库
可以存储文件的数据库有哪些?
可以存储文件的数据库有哪些?
646 0
|
4月前
|
存储 缓存 负载均衡
带你认识DM 共享存储数据库集群
带你认识DM 共享存储数据库集群
120 3
|
4月前
|
存储 C# 关系型数据库
“云端融合:WPF应用无缝对接Azure与AWS——从Blob存储到RDS数据库,全面解析跨平台云服务集成的最佳实践”
【8月更文挑战第31天】本文探讨了如何将Windows Presentation Foundation(WPF)应用与Microsoft Azure和Amazon Web Services(AWS)两大主流云平台无缝集成。通过具体示例代码展示了如何利用Azure Blob Storage存储非结构化数据、Azure Cosmos DB进行分布式数据库操作;同时介绍了如何借助Amazon S3实现大规模数据存储及通过Amazon RDS简化数据库管理。这不仅提升了WPF应用的可扩展性和可用性,还降低了基础设施成本。
98 0