DB2: Reorg之后表中记录在磁盘上存放的顺序

对DB2的表做重组之后,表中记录在磁盘上的存放顺序可能会发生改变,那么到底是怎么存放的呢?之前写过一篇文章,链接如下:

Db2中"SELECT * FROM TABLE"时返回记录的顺序

这篇文章继续探索表被重组(以下内容只关注离线重组)之后,记录是如何存放的。

先创建如下一张表,表中有两个普通索引:
db2 "create table t1(id int, name char(5))"
db2 "create index t1_idx1 on t1(id)"
db2 "create index t1_idx2 on t1(name)"
db2 "insert into t1 values(333, 'aaa')"
db2 "insert into t1 values(444, 'ddd')"
db2 "insert into t1 values(111, 'bbb')"
db2 "insert into t1 values(222, 'eee')"
db2 "insert into t1 values(555, 'ccc')"

测试1:

inst105@node01:~> db2 "select * from t1"

ID          NAME 
----------- -----
        333 aaa  
        444 ddd  
        111 bbb  
        222 eee  
        555 ccc  

  5 record(s) selected.
 
inst105@node01:~> db2 "reorg table t1"
DB20000I  The REORG command completed successfully.
inst105@node01:~> db2 "select * from t1"

ID          NAME 
----------- -----
        333 aaa  
        444 ddd  
        111 bbb  
        222 eee  
        555 ccc  

  5 record(s) selected.

结论1: Reorg之后,表中的记录存放顺序可能不会改变。

 

测试2:

inst105@node01:~> db2 "reorg table t1 index t1_idx1"
DB20000I  The REORG command completed successfully.
inst105@node01:~> db2 "select * from t1"

ID          NAME 
----------- -----
        111 bbb  
        222 eee  
        333 aaa  
        444 ddd  
        555 ccc  

  5 record(s) selected.

inst105@node01:~> db2 "reorg table t1 index t1_idx2"
DB20000I  The REORG command completed successfully.
inst105@node01:~> db2 "select * from t1"

ID          NAME 
----------- -----
        333 aaa  
        111 bbb  
        555 ccc  
        444 ddd  
        222 eee  

  5 record(s) selected.

结论2:如果Reorg table命令后面加上了index选项,那么会按照指定的index排序存放。

 

再来看另外一张表
db2 "create table t2(id int, name char(5))"
db2 "create index t2_idx1 on t2(id) CLUSTER"
db2 "insert into t2 values(333, 'aaa')"
db2 "insert into t2 values(444, 'ddd')"
db2 "insert into t2 values(111, 'bbb')"
db2 "insert into t2 values(222, 'eee')"
db2 "insert into t2 values(555, 'ccc')"

测试3:

inst105@node01:~> db2 "select * from t2"

ID          NAME 
----------- -----
        333 aaa  
        444 ddd  
        111 bbb  
        222 eee  
        555 ccc  

  5 record(s) selected.

inst105@node01:~> db2 "reorg table t2"
DB20000I  The REORG command completed successfully.
inst105@node01:~> db2 "select * from t2"

ID          NAME 
----------- -----
        111 bbb  
        222 eee  
        333 aaa  
        444 ddd  
        555 ccc  

  5 record(s) selected.

结论3:如果表上有cluster index,重组时不加index选项,则重组后表中记录按照cluster index排序存放。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值