GBase 8c
运维管理
文章

GBase 8c维护之日常重建索引

发表于2023-12-11 16:04:0815次浏览3个评论

在以下几种情况下,建议周期性的使用REINDEX命令重建索引:
 

 

1. 索引崩溃,并且不再包含有效的数据;

2. 索引变得“臃肿”,包含大量的空页或接近空页;

3. 为索引更改了存储参数(例如填充因子),并且希望这个更改完全生效;

4. 使用CONCURRENTLY选项创建索引失败,留下了一个“非法”索引。

语法:

REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } name

INDEX:重新创建指定的索引。

TABLE:重新建立指定表的所有索引,如果表有从属的"TOAST"表,则这个表也会重建索引。

SCHEMA:重新创建指定架构的所有索引。

DATABASE:重新创建当前数据库内的所有索引。共享的系统目录上的索引也会被 处理。这种形式的REINDEX不能在一个 事务块内执行。

SYSTEM:重新创建当前数据库中在系统目录上的所有索引。共享系统目录上的索引也被包括在内。用户表上的索引则不会被处理。这种形式的REINDEX不能在一个事务块内执行。

name:要被重索引的特定索引、表或者数据库的名字。索引和表名可以被模式修饰。当前,REINDEX DATABASE和 REINDEX SYSTEM只能重新索引当前数据库,因此它们的参数必须匹配当前数据库的名称。

VERBOSE:在每个索引被重建时打印进度报告。

评论

登录后才可以发表评论
GBase用户47954发表于 4个月前
感谢作者的精彩分享!
用户头像
levvel发表于 3个月前
分析得很到位!
ljt98发表于 2个月前
加油