简述南大通用GBase 8s IWA的列存储技术

原文链接:https://www.gbase.cn/community/post/4306

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

在数据库技术中,数据存储格式对于查询性能有着至关重要的影响。列存储是一种数据存储方式,它将表中的每一列数据分别存储,而不是传统的行存储方式。这种技术在处理分析型查询时,可以显著提高查询性能和减少I/O操作。

本文将通过实际的内存数据抓取和分析,证明GBase 8s的IWA的确采用了列存储,以优化读取效率和空间利用率,并探讨其对数据库性能的积极影响。本文使用的IWA环境搭建及使用,请参考如下链接:

南大通用GBase 8s中的IWA安装及使用详解 - 01

南大通用GBase 8s中的IWA安装及使用详解 - 02

数据介绍

本文使用的数据包括article、supplier和inventory三个表,通过prepare_data.sh脚本完成建表和数据插入。在脚本prepare_data.sh里,完成了建表,插入数据,截取内容如下:

create table  article( a_artid integer, a_colorid integer, a_fitemid integer, a_designerid integer, a_labelid integer, a_packagechar(25),

a_size integer,

a_stickerprice decimal(15,2),

a_descr char(125));

create table  supplier( su_suppid integer, su_stateid integer, su_namechar(60),

su_street char(40),

su_streetindex char(10),

su_rebate decimal(15,2),

su_acctbal decimal(15,2),

su_indexhits char(140));

create table  inventory( i_artid integer, i_suppid integer, i_quantity integer, i_descrchar(199) );

alter table   article add constraint primary key (a_artid) constraint p7;

alter table   supplier add constraint primary key (su_suppid) constraint p8;

alter table   inventory add constraint primary key (i_artid, i_suppid) constraint p11;

alter table   inventory add constraint foreign key (i_artid) references  article(a_artid) constraint f9;

alter table   inventory add constraint foreign key (i_suppid) references  supplier(su_suppid) constraint f10;

insert into  article values(1,1,1,1,1,"aaaaaaaaaaaaaaaaaaaa01",1,1,"bbbbbbbbbbbbbbbbbbbb0001");

insert into  article values(2,2,2,2,2,"aaaaaaaaaaaaaaaaaaaa02",2,2,"bbbbbbbbbbbbbbbbbbbb0002");

insert into  article values(3,3,3,3,3,"aaaaaaaaaaaaaaaaaaaa03",3,3,"bbbbbbbbbbbbbbbbbbbb0003");

insert into  article values(4,4,4,4,4,"aaaaaaaaaaaaaaaaaaaa04",4,4,"bbbbbbbbbbbbbbbbbbbb0004");

insert into  supplier values(1,1,"a","aaaaaaaaaaaaaaaaaaaa01","a",1,1,"bbbbbbbbbbbbbbbbbbbb0001");

insert into  supplier values(2,2,"a","aaaaaaaaaaaaaaaaaaaa02","a",2,2,"bbbbbbbbbbbbbbbbbbbb0002");

insert into  supplier values(3,3,"a","aaaaaaaaaaaaaaaaaaaa03","a",3,3,"bbbbbbbbbbbbbbbbbbbb0003");

insert into  supplier values(4,4,"a","aaaaaaaaaaaaaaaaaaaa04","a",4,4,"bbbbbbbbbbbbbbbbbbbb0004");

insert into  inventory values(1,1,1,"aaaaaaaaaaaaaaaaaaaa01");

insert into  inventory values(1,2,1,"aaaaaaaaaaaaaaaaaaaa02");

insert into  inventory values(1,3,1,"aaaaaaaaaaaaaaaaaaaa03");

insert into  inventory values(1,4,1,"aaaaaaaaaaaaaaaaaaaa04");


我们可以看到在article表的a_package列和a_descr列的数据是连续20个a或b开头的字符串。

随后我们将抓取IWA的内存,展示这些数据是如何排布的。

抓取IWA进程的内存数据

1、找到IWA的进程

[root@8s-225 testiwa]# ps aux | grep "DWA_CM"gbasedbt  4420  0.2  0.6 2860912 112120 ?  Sl  14:59  0:02 ./DWA_CM_node0 --no-console

gbasedbt  4448  0.2   0.9 2240356 151380 ?       SLl  14:59   0:02 ./DWA_CM_node1 --no-console

root     4982   0.0  0.0 103308   860 pts/1   S+   15:17   0:00 grep DWA_CM

可以看到有两个IWA进程,进程id分别是4420,4448.

2、抓取这两个进程的内存

gcore 4420

gcore 4448

这两个进程的内存会保存到文件core.4420 和 core.4448 中。

3、在这两个文件中找表的数据

打开文件,并且切换为16进制模式。

vi core.4448

%!xxd

article表的a_package列的内容是紧密排布在一起的,如下:

该列是char(25), 去掉20个’a’和编号外,还剩余3个字节,填充了3个字节的0x20。

2475682 25c6a10: 0101 0000 0000 0000 0000 0000 6161 6161  ............aaaa

2475683 25c6a20: 6161 6161 6161 6161 6161 6161 6161 6161  aaaaaaaaaaaaaaaa

2475684 25c6a30: 3031 2020 2061 6161 6161 6161 6161 6161  01  aaaaaaaaaaa

2475685 25c6a40: 6161 6161 6161 6161 6130 3220 2020 6161  aaaaaaaaa02  aa

2475686 25c6a50: 6161 6161 6161 6161 6161 6161 6161 6161  aaaaaaaaaaaaaaaa

2475687 25c6a60: 6161 3033 2020 2061 6161 6161 6161 6161  aa03  aaaaaaaaa

2475688 25c6a70: 6161 6161 6161 6161 6161 6130 3420 2020  aaaaaaaaaaa04

2475689 25c6a80: 0000 0000 0000 0000 0040 0000 0d00 0000  .........@......

2475690 25c6a90: 0000 0038 0000 0000 0100 0200 0200 0000  ...8............

article表的a_descr列的内容也是紧密排布在一起的,如下:

该列是char(125),去掉20个’b’和编号外,还剩余101个字节,填充了101个字节的0x20.

2475191 25c4b60: 0101 0000 0000 0000 0000 0000 6262 6262  ............bbbb

2475192 25c4b70: 6262 6262 6262 6262 6262 6262 6262 6262  bbbbbbbbbbbbbbbb

2475193 25c4b80: 3030 3031 2020 2020 2020 2020 2020 2020  0001

2475194 25c4b90: 2020 2020 2020 2020 2020 2020 2020 2020

2475195 25c4ba0: 2020 2020 2020 2020 2020 2020 2020 2020

2475196 25c4bb0: 2020 2020 2020 2020 2020 2020 2020 2020

2475197 25c4bc0: 2020 2020 2020 2020 2020 2020 2020 2020

2475198 25c4bd0: 2020 2020 2020 2020 2020 2020 2020 2020

2475199 25c4be0: 2020 2020 2020 2020 2062 6262 6262 6262  bbbbbbb

2475200 25c4bf0: 6262 6262 6262 6262 6262 6262 6230 3030  bbbbbbbbbbbbb000

2475201 25c4c00: 3220 2020 2020 2020 2020 2020 2020 2020  2

2475202 25c4c10: 2020 2020 2020 2020 2020 2020 2020 2020

2475203 25c4c20: 2020 2020 2020 2020 2020 2020 2020 2020

2475204 25c4c30: 2020 2020 2020 2020 2020 2020 2020 2020

2475205 25c4c40: 2020 2020 2020 2020 2020 2020 2020 2020

2475206 25c4c50: 2020 2020 2020 2020 2020 2020 2020 2020

2475207 25c4c60: 2020 2020 2020 6262 6262 6262 6262 6262  bbbbbbbbbb

2475208 25c4c70: 6262 6262 6262 6262 6262 3030 3033 2020  bbbbbbbbbb0003

2475209 25c4c80: 2020 2020 2020 2020 2020 2020 2020 2020

2475210 25c4c90: 2020 2020 2020 2020 2020 2020 2020 2020

2475211 25c4ca0: 2020 2020 2020 2020 2020 2020 2020 2020

2475212 25c4cb0: 2020 2020 2020 2020 2020 2020 2020 2020

2475213 25c4cc0: 2020 2020 2020 2020 2020 2020 2020 2020

2475214 25c4cd0: 2020 2020 2020 2020 2020 2020 2020 2020

2475215 25c4ce0: 2020 2062 6262 6262 6262 6262 6262 6262  bbbbbbbbbbbbb

2475216 25c4cf0: 6262 6262 6262 6230 3030 3420 2020 2020  bbbbbbb0004

2475217 25c4d00: 2020 2020 2020 2020 2020 2020 2020 2020

2475218 25c4d10: 2020 2020 2020 2020 2020 2020 2020 2020

2475219 25c4d20: 2020 2020 2020 2020 2020 2020 2020 2020

2475220 25c4d30: 2020 2020 2020 2020 2020 2020 2020 2020

在内存中,列的数据紧密排布在一起,可以证明IWA使用了列存。

通过本文的分析,我们验证了GBase 8s IWA的列存储技术。这种技术的应用不仅提高了数据查询的效率,还优化了存储空间的使用。我们希望本文能够帮助读者更好地理解IWA的内部工作机制,以及列存储技术如何为数据库性能带来积极的影响。

原文链接:https://www.gbase.cn/community/post/4306

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容