更改索引

允许在ALTER INDEX语句中包含的动作是:

更改一个索引的存储特性

清理索引中的空页面

重建已有的索引

  • 更改一个索引的存储特性

用ALTER INDEX可以更改索引的存储参数。包括实现唯一性或者主键约束的索引。

在不进行REBULID的时候只能修改索引的INIT和MAX的存储参数,如果指定了REBUILD参数,会重建索引,并可以指定和CREATE INDEX一样的存储参数,包括FILL,SPLIT参数。

  • 清理索引中的空页面

神通数据库支持自动清理索引中的空页面,并提供 sql 命令清理索引中的空页面。sql 命令如下:

ALTER INDEX stu_idx COALESCE;

神通数据库提供索引空页面自动清理功能,每隔一段时间会对数据库中存在较多空页面的索引进行清理。同时,用户在使用该功能时可以根据自身需求,通过修改配置参数来开启或关闭该功能,是否开启自动清理系统索引,修改触发自动清理的索引空页面阈值,自动清理触发的时间段,自动清理操作触发的间隔时间。相关的配置参数如下所示:

参数名称 参数说明 默认值 设置方法
ENABLE_INDEX_AUTO_RECYCLE 是否启用自动清理索引空页面 True 仅配置参数文件设置
ENABLE_SYS_INDEX_AUTO_RECYCLE 是否启用自动清理系统索引空页面 True 配置参数文件和SET命令都可设置
INDEX_AUTO_RECYCLE_THRESHOLD_PAGES 一个索引上出现多少个空闲页面才触发自动清理 512 配置参数文件和SET命令都可设置
INDEX_AUTO_RECYCLE_INTERVAL 索引空页面自动清理的时间间隔,单位是秒 60 仅配置参数文件设置
INDEX_AUTO_RECYCLE_START_TIME 索引空页面自动清理有效期间的开始时间,单位是时 0 配置参数文件和SET命令都可设置
INDEX_AUTO_RECYCLE_END_TIME 索引空页面自动清理有效期间的结束时间,单位是时 0 配置参数文件和SET命令都可设置
在开启自动清理索引空页面功能的前提下
  • 开始时间和结束时间都配置为0时,表示全天24小时数据库都会进行自动清理;
  • 开始时间为1,结束时间为8,表示每天凌晨1点到早上8点数据库会进行自动清理;
  • 开始时间为18,结束时间为8,表示每天晚上18点到次日早上8点数据库会进行自动清理。

注解

当前神通数据库默认全天开启自动清理索引空页面

ENABLE_SYS_INDEX_AUTO_RECYCLE 仅在 ENABLE_INDEX_AUTO_RECYCLE 开启时才有效

开启 ENABLE_INDEX_AUTO_RECYCLE 时,只有存在大于等于 INDEX_AUTO_RECYCLE_THRESHOLD_PAGES 数量空页面的索引才会被自动清理

配置参数 INDEX_AUTO_RECYCLE_START_TIME 需要和 INDEX_AUTO_RECYCLE_END_TIME 同时指定以确定索引空页面进行自动清理的空闲时刻

不支持使用sql命令清理系统表索引中的空页面

不支持清理临时表索引。

  • 重建已有的索引

在重建索引的时候,需要重新估计索引的存储参数。重建索引的时候,会重新填充索引数据块,重建索引的时候可以改变索引的存储表空间。如重建索引stu_idx

ALTER INDEX stu_idx REBUILD TABLESPACE system INIT 64K NEXT 64K FILL 70 SPLIT 50;

REBUILD子句必须紧跟在索引名之后,并出现在其它选项之前。