百度给做网站公司,中堂镇做网站,旅游网站的建设的文献综述,佛山专业网站开发公司目录
1、列存储的定义
1、默认创建列存表
3、指定创建列存表
4、指定创建列存行存冗余表
5、行、列存储查询测试 1、列存储的定义
行存储#xff08;Row-based Storage#xff09;#xff1a;行存储是以行为单位进行组织和存储数据。在这一模式下#xff0c;数据库将…目录
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;