GBase_David
作者GBase_David·2017-07-04 16:40
DBA·GBase

fragment by range 使用解析

字数 759阅读 906评论 0赞 1

create table tt (
id serial not null,
text varchar(100),
cr_time datetime year to second)
fragment by range (cr_time)
interval (1 units day)
store in (ttdbs1,ttdbs2,ttdbs3,ttdbs4)
PARTITION p0 values <date('2015-01-01') in ttdbs1
extent size 16 next size 16 lock mode row;

你可以非常容易的创建这样的一个分片表,而且在一个dbs上会有多个partn出现。这对于数据的管理、查询、空间的回收都非常有利。
而且你还会发现一个非常有意思的现象,第一个partn创建在ttdbs1上,第二个就会创建在ttdbs2上,第三个partn创建在ttdbs3上,第四个就会创建在ttdbs4上,第五个又从ttdbs1开始,依次循环,这对于数据的均匀分布是非常有好处的。
通过oncheck -pt gdb:tt |grep "Table fragment partition" 可以观察partn的创建和分布状态。
当你以为数据会均匀分布的时候,其实不然。在如下情况中:
1、数据库重启;
2、对表结构进行了alter fragment操作的时候;
当前在用的partn继续使用,下一个新建的partn就会随机分配了。。。。。。什么意思???就是说下一个新建的partn会在store in中通过 rand()函数随机选择一个作为开始,以后又开始循环使用了。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

1

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广