GaussDB-PURGE
功能描述
使用PURGE语句可以实现如下功能:
- 从回收站中清理表或索引,并释放对象相关的全部空间。
- 清理回收站。
- 清理回收站中指定表空间的对象。
注意事项
-
- PURGE TABLE:用户必须是表的所有者,且用户必须拥有表所在模式的USAGE权限,当三权分立开关关闭时,系统管理员默认拥有此权限。
- PURGE INDEX:用户必须是索引的所有者,用户必须拥有索引所在模式的USAGE权限,当三权分立开关关闭时,系统管理员默认拥有此权限。
- PURGE RECYCLEBIN:普通用户只能清理回收站中当前用户拥有的对象,且用户必须拥有对象所在模式的USAGE权限,当三权分立开关关闭时,系统管理员默认可以清理回收站所有对象。
前提条件
- 开启enable_recyclebin参数,启用回收站,参数使用请联系管理员处理。
- recyclebin_retention_time参数用于设置回收站对象保留时间,超过该时间的回收站对象将被自动清理,参数使用请联系管理员处理。
语法格式
PURGE { TABLE [schema_name.]table_name
| INDEX index_name
| RECYCLEBIN
};
参数说明
-
schema_name
模式名。
-
TABLE [ schema_name. ] table_name
清空回收站中指定的表,可用模式名修饰。
-
INDEX index_name
清空回收站中指定的索引。
-
RECYCLEBIN
清空回收站中的所有对象。
示例
--创建表reason_t1。
gaussdb=# CREATE TABLE reason_t1(
r_reason_sk integer,
r_reason_id character(16),
r_reason_desc character(100)
) WITH(STORAGE_TYPE = ustore);
--创建表reason_t2。
gaussdb=# CREATE TABLE reason_t2(
r_reason_sk integer,
r_reason_id character(16),
r_reason_desc character(100)
) WITH(STORAGE_TYPE = ustore);
-- 对表reason_t1和reason_t2添加索引。
gaussdb=# CREATE INDEX idx_t1 on reason_t1(r_reason_id);
gaussdb=# CREATE INDEX idx_t2 on reason_t2(r_reason_id);
gaussdb=# DROP TABLE reason_t1;
gaussdb=# DROP TABLE reason_t2;
--查看回收站。
gaussdb=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
rcyname | rcyoriginname | rcytablespace
----------------------------+---------------+---------------
BIN$31C94EB4207$8001$0==$0 | reason_t1 | 0
BIN$31C94EB420D$8001$0==$0 | idx_t1 | 0
BIN$31C94EB420A$8004$0==$0 | reason_t2 | 0
BIN$31C94EB420E$8004$0==$0 | idx_t2 | 0
(4 rows)
--PURGE清除表。
gaussdb=# PURGE TABLE reason_t1;
gaussdb=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
rcyname | rcyoriginname | rcytablespace
----------------------------+---------------+---------------
BIN$31C94EB420A$8004$0==$0 | reason_t2 | 0
BIN$31C94EB420E$8004$0==$0 | idx_t2 | 0
(2 rows)
--PURG清除索引。
gaussdb=# PURGE INDEX idx_t2;
gaussdb=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
rcyname | rcyoriginname | rcytablespace
----------------------------+---------------+---------------
BIN$31C94EB420A$8004$0==$0 | reason_t2 | 0
(1 row)
--PURGE清除回收站所有对象。
gaussdb=# PURGE recyclebin;
gaussdb=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
rcyname | rcyoriginname | rcytablespace
-----------------------+---------------+---------------
(0 rows)
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…