【OpenGauss 列存储学习总结 2】

OpenGauss 列存储学习总结 2

  • 概述
  • 文章链接

概述

  列存储是一种优化技术,用于在数据库系统中存储和查询大量数据。与传统的行存储方式不同,列存储将每个列的数据分别存储在独立的存储单元中,而不是按照行的方式存储。这种存储方式在分析性查询、聚合操作和大规模数据处理等场景下具有很大的优势。
  行、列存储模型各有优劣,建议根据实际情况选择。通常openGauss用于OLTP(联机事务处理)场景的数据库,默认使用行存储,仅对执行复杂查询且数据量大的OLAP(联机分析处理)场景时,才使用列存储。默认情况下,创建的表为行存储。行存储和列存储的差异如下图所示:
在这里插入图片描述
  上图中,左上为行存表,右上为行存表在硬盘上的存储方式。左下为列存表,右下为列存表在硬盘上的存储方式。

列存储的特点和优势

  1. 压缩效率高:由于相同类型的数据在列中是连续存储的,可以采用更加高效的压缩算法,从而减少存储空间的使用。
  2. 数据读取效率高:在查询中只加载需要的列,减少了不必要的数据传输,提高了查询效率。
  3. 聚合操作效率高:在列存储中,同一列的数据相邻存储,这样在进行聚合操作时只需要对该列中的数据进行计算,减少了不必要的读取和计算。
  4. 列存储适合分析性查询:分析性查询通常涉及多个列的聚合和筛选操作,列存储的存储方式更适合这种场景,可以提高查询效率。
  5. 适用于大规模数据处理:列存储在大规模数据处理、数据仓库等场景中具有明显的性能优势,能够更好地支持复杂的分析任务。

  列存储相比于行存储的优点缺点如下:

存储模型优点缺点
行存数据被保存在一起。INSERT/UPDATE 容易。选择(SELECT)时即使只涉及某几列,所有数据也都会被读取。
列存1. 查询时只有涉及到的列会被读取。
2. 投影(Projection)很高效。
3. 任何列都能作为索引。
1. 选择完成时,被选择的列要重新组装。
2. INSERT/UPDATE 比较麻烦。

  一般情况下,如果表的字段比较多(大宽表),查询中涉及到的列不多的情况下,适合列存储。如果表的字段个数比较少,查询大部分字段,那么选择行存储比较好。

存储类型适用场景
行存1. 点查询(返回记录少,基于索引的简单查询)。
2. 增、删、改操作较多的场景。
3. 频繁的更新、少量的插入。
列存1. 统计分析类查询 (关联、分组操作较多的场景)。
2. 即席查询(查询条件不确定,行存表扫描难以使用索引)。
3. 一次性大批量插入。
4. 表列数较多,建议使用列存表。
5. 如果每次查询时,只涉及了表的少数(<50%总列数)几个列,建议使用列存表。

文章链接

  在先前的学习中,【列存储学习总结】一文总结了对列存储的阶段性学习笔记,本文我们在其基础上进一步总结后续的学习笔记,目前所有列存储的文章学习连接如下:

文章连接
列存储(Copy)相关【 OpenGauss源码学习 —— 列存储(CopyTo)】
【 OpenGauss源码学习(CopyOneRowTo)】
列存储介绍相关【 OpenGauss源码学习 —— 列存储(创建表)】
【 OpenGauss源码学习 —— 列存储(cstore_vector)】
【 OpenGauss源码学习 —— 列存储(CStoreAllocator 类)】
【 OpenGauss源码学习 —— 列存储(ColumnTableSample)】
列存储(DML)相关【 OpenGauss源码学习 —— 列存储(Insert)】
【 OpenGauss源码学习 —— 列存储(update)】
列存储(analyze)相关【 OpenGauss源码学习 —— 列存储(analyze)(一)】
【 OpenGauss源码学习 —— 列存储(analyze)(二)】
【 OpenGauss源码学习 —— 列存储(analyze)(三)】
【 OpenGauss源码学习 —— 列存储(analyze)(四)】
列存储(autoanalyze)相关【 OpenGauss源码学习 —— 列存储(autoanalyze)(一)】
【 OpenGauss源码学习 —— 列存储(autoanalyze)(二)】
【 OpenGauss源码学习 —— 列存储(update_pages_and_tuples_pgclass)】
列存储(CU)相关【 OpenGauss源码学习 —— 列存储(CU)(一)】
【 OpenGauss源码学习 —— 列存储(CU)(二)】
【 OpenGauss源码学习 —— 列存储(CU)(三)】
【 OpenGauss源码学习 —— 列存储(CUStorage)】
列存储(CStore)相关【 OpenGauss源码学习 —— 列存储(CStore)(一)】
【 OpenGauss源码学习 —— 列存储(CStore)(二)】
【 OpenGauss源码学习 —— 列存储(CStore)(三)】
【 OpenGauss源码学习 —— 列存储(CStore)(四)】
【 OpenGauss源码学习 —— 列存储(CStore)(五)】
【 OpenGauss源码学习 —— 列存储(CStore)(六)】

  以上便为目前我所学习的内容,在后续的学习中,我也会持续不断地完善和更新更多有关列存的模块知识。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/171924.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java GUI实现桌球小游戏

桌球游戏是一种室内运动&#xff0c;通常在一个正式的桌球台上进行。这种游戏也被称为台球或母球。桌球游戏的目标是使用一个击球杆将彩球击入桌面四个角落的袋子中&#xff0c;得分最高的一方获胜。桌球游戏需要一定的技巧和策略&#xff0c;因此是一项受欢迎的竞技运动和休闲…

Vue:[##################] / reify:core-js: timing reifyNode:node_modules/lodash Completed in 4923ms

Vue创建项目卡在[##################] / reify:core-js: timing reifyNode:node_modules/lodash Completed in 4923ms不动的问题. 遇到问题不要慌&#xff0c;别人可以你也可以。 1.什么是npm npm是node官方的包管理器。 cnpm是个中国版的npm&#xff0c;是淘宝定制的 cnpm (g…

第2关:图的深度优先遍历

任务要求参考答案评论2 任务描述相关知识编程要求测试说明 任务描述 本关任务&#xff1a;以邻接矩阵存储图&#xff0c;要求编写程序实现图的深度优先遍历。 相关知识 图的深度优先遍历类似于树的先序遍历, 是树的先序遍历的推广&#xff0c;其基本思想如下&#xff1a; …

广西梧州盾构机主轴承尺寸测量检测CAV检测上门三维扫描-CASAIM中科广电

一、背景介绍 大型盾构机在掘进过程中&#xff0c;只能前进&#xff0c;不能倒退&#xff0c;盾构机掘进过程中&#xff0c;主轴承“手持”刀盘旋转切削掌子面并为刀盘提供旋转支撑&#xff0c;主轴承一旦失效&#xff0c;会造成严重损失。因此&#xff0c;主轴承是盾构机刀盘…

软件系统运维方案

1.项目情况 2.服务简述 2.1服务内容 2.2服务方式 2.3服务要求 2.4服务流程 2.5工作流程 2.6业务关系 2.7培训 3.资源提供 3.1项目组成员 3.2服务保障 点击获取所有软件开发资料&#xff1a;点我获取

PHP中cookie与session使用指南

PHP中cookie与session使用指南 Cookie和session的出现&#xff0c;是为了解决http协议无状态交互的窘境&#xff0c;它们都用于存储客户端的相关信息 0x01 Cookie使用 简介 Cookie 是一种在客户端存储数据的机制&#xff0c;通常用于记录用户的状态和偏好。下面将介绍如何在…

软件测试最重要的事:测试用例的编写

前言 软件测试用例得出软件测试用例的内容&#xff0c;其次&#xff0c;按照软件测试写作方法&#xff0c;落实到文档中&#xff0c;两者是形式和内容的关系&#xff0c;好的测试用例不仅方便自己和别人查看&#xff0c;而且能帮助设计的时候考虑的更周。 一个好的测试用例必…

企业app软件定制开发的重点是什么?|小程序网站搭建

企业app软件定制开发的重点是什么&#xff1f;|小程序网站搭建 在当今数字化时代&#xff0c;企业对于信息技术的依赖越来越大。为了适应市场需求并提高内部运营效率&#xff0c;许多企业开始寻求定制开发企业app软件。这种定制开发可以根据企业的具体需求和业务流程进行个性化…

DITTEL控制器维修SENSITRON6-2AE

DITTEL工控产品维修包括&#xff1a;德国DITTEL平衡测试仪维修,DITTEL模块&#xff0c;过程监控模块&#xff0c;DITTEL控制器&#xff0c;平衡头&#xff0c;机电平衡头&#xff0c;显示器&#xff0c;平衡系统等产品。 DITTEL过程控制模块维修 DM6000是一个过程控制模块&…

5分钟带你了解什么是原型图!

原型图&#xff0c;亦称原型设计稿&#xff0c;在软件研发流程中是非常基础和重要的一类设计项目。而对于产品经理、交互设计师以及产品运营等职业群体来说&#xff0c;原型设计则是一门不可或缺的技能。并且&#xff0c;原型设计也是一门有门槛、有规范的工作。 什么是原型图…

【通俗易懂】git原理、安装及连接gitlab,github

目录 一、GIT原理【这部分也挺简单&#xff0c;可以看看&#xff0c;如果没时间可以直接跳到第二部分】 SVN与Git的的区别 二、安装Git 2.1 获取Git安装程序 2.2 Git安装过程 三、Git连接Gitlab 3.1 gitlab准备工作 3.2 本地计算机准备工作及配置git 四、Git连接Github…

【EI会议征稿】第七届电子器件与机械工程国际学术会议(ICEDME 2024)

第七届电子器件与机械工程国际学术会议&#xff08;ICEDME 2024&#xff09; 2024 7th International Conference on Electron Device and Mechanical Engineering 第七届电子器件与机械工程国际学术会议&#xff08;ICEDME 2024&#xff09;将于2024年3月15-17日在山西太原召…

Sui生态多家协议上线流动质押,兼顾收益与灵活性

在Sui上&#xff0c;流动质押协议允许DeFi用户质押SUI&#xff0c;并获得可交易或用于其他DeFi活动的流动质押标记token。这一过程绕过了传统质押中验证节点锁定token的问题。用户可以通过Sui的权益证明机制&#xff08;PoS&#xff09;确保网络的安全&#xff0c;同时参与生态…

微波功率计/频率计-87234系列USB峰值/平均功率计

仪器仪表 苏州新利通 87234系列 USB峰值/平均功率计 频率范围覆盖&#xff1a;50MHz&#xff5e;67GHz 一款基于USB 2.0接口的二极管检波式宽带功率测量仪器 国产思仪功率计 01 产品综述 87234D/E/F/L USB峰值/平均功率计是一款基于USB 2.0接口的二极管检波式宽带功率测…

GNSS技术在交通运输领域的创新应用

全球导航卫星系统&#xff08;GNSS&#xff09;技术在交通运输领域发挥着越来越重要的作用&#xff0c;为汽车导航、航空、海运等交通模式提供了精准的定位和导航服务。本文将深入探讨GNSS技术在交通运输领域的应用&#xff0c;以及它对交通管理、安全性和效率的积极影响。 一、…

嵌入式开发、C++后台开发、C++音视频开发怎么选择?

嵌入式开发、C后台开发、C音视频开发怎么选择&#xff1f; 在日常生活中&#xff0c;视频类应用占据了我们越来越多的时间&#xff0c;各大公司也纷纷杀入这个战场&#xff0c;不管是抖音、快手等短视频类型&#xff0c;虎牙、斗鱼等直播类型&#xff0c;腾讯视频、爱奇艺、优酷…

vue中使用echarts渐变柱状图 Cannot read properties of undefined (reading ‘graphic‘)解决方法

在使用渐变颜色时报错&#xff0c;Cannot read properties of undefined (reading ‘graphic’) echarts也下载了&#xff0c;引入了&#xff0c;就是报错&#xff0c;用不了new charts&#xff0c; 结果换了一个版本号就可以了&#xff0c;本来用的"echarts": "…

机器学习介绍与分类

随着科学技术的不断发展&#xff0c;机器学习作为人工智能领域的重要分支&#xff0c;正逐渐引起广泛的关注和应用。本文将介绍机器学习的基本概念、原理和分类方法&#xff0c;帮助读者更好地理解和应用机器学习技术。 一、机器学习的基本概念 机器学习是一种通过从数据中学…

leetcode——设计循环队列

设计循环队列 这个题目在这里小编只分享一个解题思路&#xff0c;因为还有一个思路小编还在尝试&#xff0c;一直过不了&#xff0c;还在这里不断尝试&#xff0c;等我试出来的时候我在分享给大家&#xff0c;首先我们在这里给出的是数组的形式&#xff0c;后面在分享单链表的思…

PHP手动为第三方类添加composer自动加载

有时候我们要使用的第三方的类库&#xff08;SDK&#xff09;没用用composer封装好&#xff0c;无法用composer进行安装&#xff0c;怎么办呢&#xff1f;&#xff1f;&#xff1f; 步骤如下&#xff1a; 第一步、下载你需要的SDK文件包&#xff0c;把它放在vendor目录下 第二…