随同 admin() 或 task() 函数,使用 defragment 参数来对表或索引取消分片以合并不相邻的 extent。
对表取消分片使得数据行离得更近,以避免分区标题页移除问题,并可提高性能。
在对分区取消分片之前,您应回顾对分区取消分段。
使用下列语法,您或可指定 defragment 参数,或可指定 defragment partnum 参数:
元素 | 描述 | 关键考虑 |
---|---|---|
database | 包括您想要取消分片的表或索引的数据库名。 | |
owner | 表所有者的用户 ID。 | |
table | 要取消分片的表名。 | |
partition_number | 要取消分片的一个或多个分区号。 | 要指定多于一个分区,请使用逗号分隔的分区号列表。 |
使用 defragment 参数来对特定的表取消分片。使用 defragment partnum 参数来对一个或多个磁盘分区取消分片。
关于取消分片的信息存储在共享内存中。使用 oncheck -pt 和 -pT:显示表或分片的 tblspaces 命令来显示关于特定的表或分片的 extent 数目信息。使用 onstat -g defragment 命令:打印磁盘碎片整理的分区 extent 。
如果取消分片需要减少 extent 的数目,减少最少 1 extent,则需要返回 0(成功),即使在分区中有许多 extent。
如果分区有单个 extent,则取消分片需要返回 0 来表明需要成功,即使无 extent 合并。
EXECUTE FUNCTION task("defragment","stores_demo:gbasedbt.customer");
EXECUTE FUNCTION admin("defragment","stores_demo:gbasedbt.customer");
EXECUTE FUNCTION task("defragment partnum","2097154");
EXECUTE FUNCTION admin("defragment partnum","2097154");
EXECUTE FUNCTION task("defragment partnum", "16777217,28477346");
EXECUTE FUNCTION admin("defragment partnum", "16777217,28477346");