当前位置: 首页 > news >正文

OceanBase:列存储

目录

1、列存储的定义

1、默认创建列存表

3、指定创建列存表

4、指定创建列存行存冗余表

5、行、列存储查询测试


1、列存储的定义

  • 行存储(Row-based Storage):行存储是以行为单位进行组织和存储数据。在这一模式下,数据库将一条记录的所有字段作为一个整体存储在一起,即每一行数据的所有信息连续存放。这种结构类似于我们在表格中看到的数据布局,每一行代表一个实体的完整信息。行式存储常见于传统的关系型数据库管理系统(RDBMS),如MySQL、Oracle、SQL Server等,它适合需要经常进行整行读写操作的场景,如事务处理系统(OLTP)。
  • 列存储(Column-based Storage): 列存储则是以列为单位进行组织和存储数据。在这种模式下,数据库将表中同一列的所有数据放在一起存储,不同列的数据分开存放。这意味着,每一列的数据在物理上是连续的,而属于同一行的不同列数据则可能分布在不同的位置。列式存储非常适合于数据分析和数据仓库应用,因为它允许对单个或部分列进行高效的查询和压缩,仅需读取查询所涉及的列,从而大幅减少I/O操作和提升分析查询的性能。列式存储的代表有Druid、Kudu、ClickHouse等系统,它们在大数据分析和在线分析处理(OLAP)场景中表现优异。

        注:图片来源于网络

        OceanBase 4.3 版本基于LSM-Tree 架构基础进行扩展,正式推出列存引擎,在一个架构、一个数据库上,实现了列存和行存数据存储一体化,兼顾 TP 和 AP 查询性能。

1、默认创建列存表

        1) 修改表默认存储类型

# 查看表默认存储类型

show parameters like 'default_table_store_format'\G;

# 修改表默认存储类型

alter system set default_table_store_format = "column";

        2)创建列存表

CREATE TABLE `dim_area` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `level` int NOT NULL,
  `parent_code` varchar(20)  NOT NULL,
  `area_code` varchar(20)  NOT NULL,
  `name` varchar(50)  NOT NULL,
  `short_name` varchar(50)  NOT NULL,
  `merger_name` varchar(50)  NOT NULL,
  `pinyin` varchar(30)  NOT NULL,
  `lng` decimal(10,6) NOT NULL,
  `lat` decimal(10,6) NOT NULL,
  `pcode` varchar(2)  DEFAULT NULL,
  `ccode` varchar(2)  DEFAULT NULL,
  `acode` varchar(2)  DEFAULT NULL,
  `tcode` varchar(3)  DEFAULT NULL,
  `vcode` varchar(3)  DEFAULT NULL,
  PRIMARY KEY (`id`)
);

3、指定创建列存表

        通过with column group 指定创建列存表:

CREATE TABLE `dim_area_c` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `level` int NOT NULL,
  `parent_code` varchar(20)  NOT NULL,
  `area_code` varchar(20)  NOT NULL,
  `name` varchar(50)  NOT NULL,
  `short_name` varchar(50)  NOT NULL,
  `merger_name` varchar(50)  NOT NULL,
  `pinyin` varchar(30)  NOT NULL,
  `lng` decimal(10,6) NOT NULL,
  `lat` decimal(10,6) NOT NULL,
  `pcode` varchar(2)  DEFAULT NULL,
  `ccode` varchar(2)  DEFAULT NULL,
  `acode` varchar(2)  DEFAULT NULL,
  `tcode` varchar(3)  DEFAULT NULL,
  `vcode` varchar(3)  DEFAULT NULL,
  PRIMARY KEY (`id`)
) with column group (each column);

4、指定创建列存行存冗余表

        在某些场景下,用户可以容忍一定程度的数据冗余,以满足 AP/TP 业务场景的双重需求。此时,可以增加行存数据的冗余,通过 `with column group` 语法增加指定 `all columns` 即可实现。

CREATE TABLE `dim_area_a` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `level` int NOT NULL,
  `parent_code` varchar(20)  NOT NULL,
  `area_code` varchar(20)  NOT NULL,
  `name` varchar(50)  NOT NULL,
  `short_name` varchar(50)  NOT NULL,
  `merger_name` varchar(50)  NOT NULL,
  `pinyin` varchar(30)  NOT NULL,
  `lng` decimal(10,6) NOT NULL,
  `lat` decimal(10,6) NOT NULL,
  `pcode` varchar(2)  DEFAULT NULL,
  `ccode` varchar(2)  DEFAULT NULL,
  `acode` varchar(2)  DEFAULT NULL,
  `tcode` varchar(3)  DEFAULT NULL,
  `vcode` varchar(3)  DEFAULT NULL,
  PRIMARY KEY (`id`)
) with column group (all columns, each column);

5、行、列存储查询测试

        测试环境采用单机部署,同一个数据库中建两个相同结构的表,一个是行存储,一个是列存储,两个表的数据也是一样的,所有资源配置都是一样的,测试查询结果如下:

1)统计总记录数

#行存储

select count(id) from dim_user;

#列存储

select count(id) from dim_user_c;

2)分组统计记录数

#行存储

select pcode,count(id) from dim_user  group by pcode;

#列存储

select pcode,count(id) from dim_user_c  group by pcode;

相关文章:

OceanBase:列存储

目录 1、列存储的定义 1、默认创建列存表 3、指定创建列存表 4、指定创建列存行存冗余表 5、行、列存储查询测试 1、列存储的定义 行存储(Row-based Storage):行存储是以行为单位进行组织和存储数据。在这一模式下,数据库将…...

Rust:WIndows 环境下交叉编译 Linux 平台程序

在Windows下交叉编译Rust程序以在x86_64位的CentOS操作系统上运行,你需要遵循几个步骤来设置交叉编译环境并编译你的程序。以下是一个大致的指南: 1. 安装Rust和Cargo 首先,确保你已经在Windows上安装了Rust和Cargo。你可以从Rust官方网站下…...

从零学爬虫:使用比如说说解析网页结构

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、网页结构概述 示例:查看网页结构 三、使用比如说说解析网页 1.…...

C#数据类型变量、常量

一个变量只不过是一个供程序操作的存储区的名字。 在 C# 中,变量是用于存储和表示数据的标识符,在声明变量时,您需要指定变量的类型,并且可以选择性地为其分配一个初始值。 在 C# 中,每个变量都有一个特定的类型&…...

Java高级面试问题及答案

Java高级面试问题及答案 问题1: 请描述Java内存模型(JMM)及其在并发编程中的重要性。 探讨过程: 在并发编程中,多个线程之间如何协调对共享变量的访问是一个核心问题。Java内存模型定义了一组规则,来确保在多线程环境中对共享变量的修改能够…...

出现 Transaction rolled back because it has been marked as rollback-only 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 用户反馈的Bug如下所示: Transaction rolled back because it has been marked as rollback-only截图如下: 浏览器终端同样显示: 2. 原理分析 错误表明,在事务的生命周期内,遇到了某个异常或条件,导致该事务被标记…...

数据结构算法题day03

数据结构算法题day03 题目 题目 2.设计一个高效算法&#xff0c;将顺序表L的所有元素逆置&#xff0c;要求算法的空间复杂度为O(1)算法思想&#xff1a; 1、常规的解法&#xff1a; Void reverse (sqlist &L){Elemtype temp; //辅助变量for(i 0,i < L.length; i){temp…...

深入分析C#中的“编写器”概念——代码修改、注解与重构

文章目录 1. 编写器&#xff08;Writer&#xff09;的概念2. 编写器的作用和工作原理3. 编写器的重要性4. 写入器常用方法5. 写入器示例6. 编写器示例——使用Fody进行代码注解和重构7. 总结 在软件开发过程中&#xff0c;代码的维护和更新是至关重要的。C#作为一种流行的编程语…...

uview1.0 u-form表单回显校验不通过

提交到后端的数据&#xff0c;回显后不做任何修改无法通过表单校验 原因&#xff0c;u-form表单校验的类型默认为string&#xff0c;但是后端返回的是integer类型&#xff0c;导致无法通过校验 解决&#xff0c;既然后端返回的是整数形&#xff0c;那么我们就将校验规则的type…...

监控员工电脑的软件有哪些,不得不说这几款电脑监控软件太好用了

监控员工电脑的软件在市场上种类繁多&#xff0c;以下是几款备受好评的电脑监控软件&#xff0c;它们各自具有独特的功能和优势&#xff0c;选择前必须了解一下才能做成正确决定。 1.安企神&#xff1a; 这款软件支持7天试用测试&#xff0c;获取测试版请移驾 ↓↓↓ 安企神…...

【MySQL精通之路】索引优化(2)

目录 1 MySQL如何使用索引 2 主键优化 3 空间索引优化 4 外键优化 5 列索引 6 多列索引 7 验证索引使用情况 8 InnoDB和MyISAM索引统计集合 9 B树索引与哈希索引的比较 9.1 B-树索引特征 9.2 哈希索引特征 10 索引扩展的使用 11 优化器使用生成的列索引 12 不可见…...

VUE3 学习笔记(5):数组处理、计算属性与函数、class与Style绑定

数组监测处理方法 VUE 提供了关于数组处理的直接方法&#xff0c;但并非全部都是可以处理的 如下可以直接处理&#xff1a; .push --向数组中增加 .pop --从数组中最后减去一个元素 .shift --从数组中第一个减去一个元素 .unshift --在数组中的头部添加一个元素 .splice --自定…...

基于springboot实现大学生一体化服务平台系统项目【项目源码+论文说明】

基于springboot实现大学生一体化服务平台系统演示 摘要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统大学生综…...

惠海 H6902B 升压恒流芯片 太阳能 风扇灯 应急灯 支持3.7V 5V 7.4V

惠海H6902B升压恒流驱动芯片是一款专为LED照明应用设计的驱动方案。该芯片具有多项产品特征&#xff0c;能够满足多种LED照明需求。 适用于多种电压输入范围&#xff08;2.7V-80V&#xff09;并具备效率&#xff08;达95%以上&#xff09;和工作频率&#xff08;1MHz&#xff…...

体验SmartEDA的高效与便捷,电子设计从未如此简单

SmartEDA&#xff1a;革新电子设计&#xff0c;让高效与便捷触手可及 在快节奏的现代生活中&#xff0c;科技日新月异&#xff0c;各行各业都在寻求更高效、更便捷的解决方案。对于电子设计行业而言&#xff0c;SmartEDA的出现&#xff0c;无疑是一场革命性的变革。它以其高效…...

LangChain笔记

很好的LLM知识博客&#xff1a; https://lilianweng.github.io/posts/2023-06-23-agent/ LangChain的prompt hub: https://smith.langchain.com/hub 一. Q&A 1. Q&A os.environ["OPENAI_API_KEY"] “OpenAI的KEY” # 把openai-key放到环境变量里&…...

金融序列的布朗运动

https://zhuanlan.zhihu.com/p/659164160 python金融衍生品定价系列之一 —— 布朗运动与伊藤公式 导语:网络上和书本上关于期权定价相关的内容已经较为丰富,但将理论和python代码结合起来讲的却很少,这也是python金融衍生品定价系列的写作初衷,在用python实现相关模型的同…...

利用ChatGPT辅助数学建模竞赛:理清思路、解题技巧与实战经验

导言 数学建模竞赛是许多学生在学术领域追求卓越的重要途径之一。然而,竞赛题目的复杂性常常让人望而生畏。在这样的情况下,利用人工智能工具,如ChatGPT,可以极大地辅助我们快速理清思路、解题技巧与实战经验。本文将探讨如何利用ChatGPT在数学建模竞赛中取得更好的成绩,…...

Java基础——Optional

Optional 类主要解决的问题是臭名昭著的空指针异常NPE&#xff08;NullPointerException&#xff09; 在 Java 8 之前&#xff0c;任何访问对象方法或属性的调用都可能导致 NullPointerException&#xff1a; String isocode user.getAddress().getCountry().getIsocode().to…...

Mask R-CNN实战

一、源码和数据集的准备 获取git开源项目代码 https://github.com/matterport/Mask_RCNN 一下载2.1的前三个文件&#xff0c;和2.0的第一个h5文件&#xff0c;coco.h5是预训练权重&#xff0c;也放入源码 项目文件结构如下&#xff1a; samples/logs:训练模型保存的位置 配置…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...