PURGE
功能描述
使用PURGE语句可以实现如下功能:
- 从回收站中清理表或索引,并释放对象相关的全部空间。
- 清理回收站。
- 清理回收站中指定表空间的对象
注意事项
- 清除(PURGE)操作支持:表(PURGE TABLE)、索引(PURGE INDEX)、回收站(PURGE RECYCLEBIN)。
-
执行PURGE操作的权限要求如下:
-
PURGE TABLE:用户必须是表的所有者,且用户必须拥有表所在模式的USAGE权限,系统管理员默认拥有此权限。
- PURGE INDEX:用户必须是索引的所有者,用户必须拥有索引所在模式的USAGE权限,系统管理员默认拥有此权限。
- PURGE RECYCLEBIN:普通用户只能清理回收站中当前用户拥有的对象,且用户必须拥有对象所在模式的USAGE权限,系统管理员默认可以清理回收站所有对象。
语法格式
1. PURGE { TABLE [schema_name.]table_name
2. | INDEX index_name
3. | RECYCLEBIN
4. }
参数说明
- [ schema_name. ]
模式名。 - TABLE [ schema_name. ] table_name
清空回收站中指定的表。 - INDEX index_name
清空回收站中指定的索引。 - RECYCLEBIN
清空回收站中的对象。
示例
1. -- 创建表空间reason_table_space
2. openGauss=# CREATE TABLESPACE REASON_TABLE_SPACE1 owner tpcds RELATIVE location 'tablespace/tsp_reason1';
3. -- 在表空间创建表tpcds.reason_t1
4. openGauss=# CREATE TABLE tpcds.reason_t1
5. (
6. r_reason_sk integer,
7. r_reason_id character(16),
8. r_reason_desc character(100)
9. ) tablespace reason_table_space1;
10. -- 在表空间创建表tpcds.reason_t2
11. openGauss=# CREATE TABLE tpcds.reason_t2
12. (
13. r_reason_sk integer,
14. r_reason_id character(16),
15. r_reason_desc character(100)
16. ) tablespace reason_table_space1;
17. -- 在表空间创建表tpcds.reason_t3
18. openGauss=# CREATE TABLE tpcds.reason_t3
19. (
20. r_reason_sk integer,
21. r_reason_id character(16),
22. r_reason_desc character(100)
23. ) tablespace reason_table_space1;
24. -- 对表tpcds.reason_t1创建索引
25. openGauss=# CREATE INDEX index_t1 on tpcds.reason_t1(r_reason_id);
26. openGauss=# DROP TABLE tpcds.reason_t1;
27. openGauss=# DROP TABLE tpcds.reason_t2;
28. openGauss=# DROP TABLE tpcds.reason_t3;
29. --查看回收站
30. openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
31. rcyname | rcyoriginname | rcytablespace
32. -----------------------+---------------+---------------
33. BIN$16409$2CEE988==$0 | reason_t1 | 16408
34. BIN$16412$2CF2188==$0 | reason_t2 | 16408
35. BIN$16415$2CF2EC8==$0 | reason_t3 | 16408
36. BIN$16418$2CF3EC8==$0 | index_t1 | 0
37. (4 rows)
38. --PURGE清除表
39. openGauss=# PURGE TABLE tpcds.reason_t3;
40. openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
41. rcyname | rcyoriginname | rcytablespace
42. -----------------------+---------------+---------------
43. BIN$16409$2CEE988==$0 | reason_t1 | 16408
44. BIN$16412$2CF2188==$0 | reason_t2 | 16408
45. BIN$16418$2CF3EC8==$0 | index_t1 | 0
46. (3 rows)
47. --PURGE清除索引
48. openGauss=# PURGE INDEX tindex_t1;
49. openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
50. rcyname | rcyoriginname | rcytablespace
51. -----------------------+---------------+---------------
52. BIN$16409$2CEE988==$0 | reason_t1 | 16408
53. BIN$16412$2CF2188==$0 | reason_t2 | 16408
54. (2 rows)
55. --PURGE清除回收站所有对象
56. openGauss=# PURGE recyclebin;
57. openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
58. rcyname | rcyoriginname | rcytablespace
59. -----------------------+---------------+---------------
60. (0 rows)
