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 条评论