PURGE

功能描述

使用PURGE语句可以实现如下功能:

  • 从回收站中清理表或索引,并释放对象相关的全部空间。
  • 清理回收站。
  • 清理回收站中指定表空间的对象

注意事项

  • 清除(PURGE)操作支持:表(PURGE TABLE)、索引(PURGE INDEX)、回收站(PURGE RECYCLEBIN)、表空间(PURGE TABLESPACE)。

  • 执行PURGE操作的权限要求如下:

    • PURGE TABLE:用户必须是表的所有者,且用户必须拥有表所在模式的USAGE权限,系统管理员默认拥有此权限。
    • PURGE INDEX:用户必须是索引的所有者,用户必须拥有索引所在模式的USAGE权限,系统管理员默认拥有此权限。
    • PURGE TABLESPACE:用户必须是表空间的所有者,用户必须拥有对象所在模式的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. openGauss=# CREATE TABLE tpcds.reason_t4
  25. (
  26. r_reason_sk integer,
  27. r_reason_id character(16),
  28. r_reason_desc character(100)
  29. );
  30. openGauss=# DROP TABLE tpcds.reason_t1;
  31. openGauss=# DROP TABLE tpcds.reason_t2;
  32. openGauss=# DROP TABLE tpcds.reason_t3;
  33. openGauss=# DROP TABLE tpcds.reason_t4;
  34. --查看回收站
  35. openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
  36. rcyname | rcyoriginname | rcytablespace
  37. -----------------------+---------------+---------------
  38. BIN$16409$2CEE988==$0 | reason_t1 | 16408
  39. BIN$16412$2CF2188==$0 | reason_t2 | 16408
  40. BIN$16415$2CF2EC8==$0 | reason_t3 | 16408
  41. BIN$16418$2CF3EC8==$0 | reason_t4 | 0
  42. (4 rows)
  43. --清空表
  44. openGauss=# PURGE TABLE tpcds.reason_t1;
  45. openGauss=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN;
  46. rcyname | rcyoriginname | rcytablespace
  47. -----------------------+---------------+---------------
  48. BIN$16412$2CF2188==$0 | reason_t2 | 16408
  49. BIN$16415$2CF2EC8==$0 | reason_t3 | 16408
  50. BIN$16418$2CF3EC8==$0 | reason_t4 | 0
  51. (3 rows)