随同 admin() 或 task() 函数,使用 index compress repack shrink 参数来压缩分离的 B-tree 索引,合并空闲空间(重新打包)并归还分区中的空闲空间(收缩)。
下表包含每一参数的简要说明。
参数 | 描述 |
---|---|
compress | 压缩索引。 |
parallel | 并行地运行压缩或重新打包操作。为每一表的分片或分片列表启动一个线程,且跨越这些分片并行地运行该操作。 |
repack | 通过将数据移到索引的前部来合并空闲空间。 |
shrink | 将索引末端的空闲空间归还到 dbspace,从而减少索引的总大小。 |
下表显示您可用来压缩、重新打包和收缩索引的元素。
元素 | 描述 | 关键考虑 |
---|---|---|
index_name | 您想要压缩的索引名称。 | 要求的。
您必须使用系统目录表中相同的大写或小写字母。 |
database_name | 包含您想要压缩的索引的数据库名。 | 可选的。
如果您未指定数据库,则数据库服务器使用当前的数据库。 如果您输入数据库名,则必须使用与系统目录表中相同的大写或小写字母。 |
owner | 包含您想要压缩的索引的数据库的所有者名。 | 可选的。
如果您未指定所有者,则数据库服务器使用当前的所有者。 如果您输入所有者名,则必须使用与系统目录表中相同的大写或小写字母。 |
您可压缩一个在分片的或未分片的表上分离的 B-tree 索引。
要被压缩,索引必须有至少 2000 个键。如果索引内的分片没有至少 2000 个键,则当创建索引时数据库服务器不压缩索引或分片。即使有新的键添加到索引,索引也保持不压缩。如果您想要压缩该索引,请运行另一个带有 index compress 参数的 SQL 管理 API task() 或 admin() 函数。
要确定索引是否包含最小键数,请运行 oncheck -pT 命令并查看 Number of keys 域中的信息。
通常情况下,请您在压缩操作之后执行重新打包操作,并在重新操作之后执行收缩。
压缩操作仅压缩索引的叶子(底层)。
你可取消操作,例如在 DB-Access 中按下 CTRL-C。
你不可解压缩索引。如果您想要解压缩索引,则可删除压缩的索引并重新创建它。
下列命令并行地压缩、重新打包并收缩索引。
EXECUTE FUNCTION task("index compress repack shrink parallel", "ind5", "customer", "jayson");