GBASE 8s 存储详解

GBASE 8s 存储详解,第1张

建库,建表,插入数据

启动dbaccess

dbaccess - -

建库,建表,插入数据:

drop database if exists dbtype ;

create database dbtype with log;

create table t_ serial(c1 serial) in dbs1;

insert into t_serial (c2) values(0);

insert into t_serial (c2) values(0);

insert into t_serial (c2) values(0);

insert into t_serial (c2) values(0);

数据的选择是:最小值,中间值,最大值,空值。

找到数据的rowid

> select c1,rowid from t_serial;

         c1       rowid

          1         257

          2         258

          3         259

          4         260

4 row(s) retrieved.

找到数据的物理位置

通过oncheck命令,可以根据库名,表名,rowid,找到数据的物理位置。

[root@localhost ids]# oncheck -pp dbtype:t_serial 257

addr             stamp    chksum nslots flag type         frptr frcnt next     prev

14:54            6345352  d2d0   4      1    DATA         56    1972  0        0       

        slot ptr   len   flg

        1    24    8     0  

        2    32    8     0  

        3    40    8     0  

        4    48    8     0  

slot   1:

    0:  0  0  0  1  0  0  0  0                           ................

slot   2:

    0:  0  0  0  2  0  0  0  0                           ................

slot   3:

    0:  0  0  0  3  0  0  0  0                           ................

slot   4:

    0:  0  0  0  4  0  0  0  0                           ................

14:54的含义是第14个chunk的54页。

查看数据文件 确保数据落地

强制执行一次检查点,可以确保刚才插入的数据落地。

[root@localhost ids]# onmode –c

打开文件

用16进制的方式,打开数据文件

vi /home/ids/storage/dbs1

%!xxd

根据数据所在的地址 14:54计算出数据所在的位置:

查看slot

2048*54 = 0x1b000,也就是关心的数据从0x1b000开始的,

先从slot看起。

这个页的页尾:

001b7e0: 0000 0000 0000 0000 0000 0000 3000 0800  ............0...

001b7f0: 2800 0800 2000 0800 1800 0800 88d2 6000  (... .........`.

其中一个slot指向一行数据,一个slot占用4个字节,如上图,1800 0800是第一个slot,指向第一行数据,含义是:从0x0018字节开始,长度是0x0008字节。

以此类推,2000 0800指向第二行2800 0800指向第三行3000 0800指向第四行

查看数据

根据slot指向的位置,查看数据,如下:

001b000: 3600 0000 0e00 d0d2 0400 0108 3800 b407  6...........8...

001b010: 0000 0000 0000 0000 0000 0001 0000 0000  ................

001b020: 0000 0002 0000 0000 0000 0003 0000 0000  ................

001b030: 0000 0004 0000 0000 0000 0000 0000 0000  ................

第一行的c1数据:1, 就是图中的0000 0001

第二行的c1数据:2,就是图中的0000 0002

第三行的c1数据:3,就是图中的0000 0003

第四行的c1数据:4,就是图中的0000 0004

serial的规格和int一致,只是它在插入的时候自增。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/741849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存