更改索引¶
允许在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子句必须紧跟在索引名之后,并出现在其它选项之前。