列存储
openGauss支持行列混合存储。行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。
行、列存储模型各有优劣,建议根据实际情况选择。通常openGauss用于OLTP(联机事务处理)场景的数据库,默认使用行存储,仅对执行复杂查询且数据量大的OLAP(联机分析处理)场景时,才使用列存储。默认情况下,创建的表为行存储。行存储和列存储的差异请参见图1。
图 1 行存储和列存储的差异

上图中,左上为行存表,右上为行存表在硬盘上的存储方式。左下为列存表,右下为列存表在硬盘上的存储方式。
行、列存储有如下优缺点:
|
存储模型
|
优点
|
缺点
|
|
行存
|
数据被保存在一起。INSERT/UPDATE容易。
|
选择(SELECT)时即使只涉及某几列,所有数据也都会被读取。
|
|
列存
|
- 查询时只有涉及到的列会被读取。
- 投影(Projection)很高效。
- 任何列都能作为索引。
|
- 选择完成时,被选择的列要重新组装。
- INSERT/UPDATE比较麻烦。
|
一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。
|
存储类型
|
适用场景
|
|
行存
|
- 点查询(返回记录少,基于索引的简单查询)。
- 增、删、改操作较多的场景。
- 频繁的更新、少量的插入。
|
|
列存
|
- 统计分析类查询 (关联、分组操作较多的场景)。
- 即席查询(查询条件不确定,行存表扫描难以使用索引)。
- 一次性大批量插入。
- 表列数较多,建议使用列存表。
- 如果每次查询时,只涉及了表的少数(
相关推荐
GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 文章来源:GreatSQL社区原创 线上使用MySQL8.0.25的数据库,通过监控发现数据库在查询一个视图(80张表的union all)时内存和cpu均明显上升。 在8.0.25 MySQL Community Server官方版本测试发现:只能在
MySQL是一个被广泛使用的关系型数据库管理系统,经常用于网站开发和数据存储。当有多个数据库和表时,有时需要对全部数据库进行统一的修改。下面将介绍如何修改全部数据库。 1. 登录MySQL 在命令行输入如下命令来登录MySQL: mysql -u 用户名 -p 2. 查看全部数据库 登录成功后,输入如下命令查看全部数据库: show databases; 3. 切换到要修改的数据库 输入如下命令切
作者:李富强,爱可生 DBA 团队成员,熟悉 MySQL,TiDB,OceanBase 等数据库。相信持续把对的事情做好一点,会有不一样的收获。 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 本文约 900 字,预计阅读需要 3 分钟。 1摘要 MySQL 8.3 创新版于 2024 年 1 月 16 号发布,该版本扩展了 MySQL 复制和组复制中使用全局事务标识
利用MySQL的DATE_FORMAT函数自定义日期和时间的显示格式 日期和时间在数据库中是非常重要的数据类型,MySQL提供了DATE_FORMAT函数来自定义日期和时间的显示格式。通过使用这个函数,我们可以灵活地控制日期和时间的输出格式,以满足不同的需求。 使用DATE_FORMAT函数的语法如下: DATE_FORMAT(date, format) 登录后复制 其中,date参数是要格式化的
看了每日运维网上的很多文章,整理了如下步骤,基本上可以说是终结解决方法了,这里给详细的整理下了, 希望可以帮助更新的朋友,让我们的服务器更加安全。每日运维奉献。 首 看了每日运维网上的很多文章,整理了如下步骤,基本上可以说是终结解决方法了,这里给详细的整理下了, 希望可以帮助更新的朋友,让我们的服务器更加安全。每日运维奉献。首先是大家已经安装好了sqlserver 企业版。第一步: Win2003
回到顶部
|