更新时间:2025-09-12 GMT+08:00
分享

PURGE

功能描述

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

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

注意事项

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

  • 执行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

    清空回收站中的对象。

示例

-- 创建SCHEMA。
m_db=# CREATE SCHEMA tpcds;

-- 创建表tpcds.reason_t1
m_db=# CREATE TABLE tpcds.reason_t1
 (
  r_reason_sk    integer,
  r_reason_id    character(16),
  r_reason_desc  character(100)
  ) ;
-- 创建表tpcds.reason_t2
m_db=# CREATE TABLE tpcds.reason_t2
 (
  r_reason_sk    integer,
  r_reason_id    character(16),
  r_reason_desc  character(100)
  ) ;
-- 对表tpcds.reason_t1创建索引
m_db=# CREATE INDEX index_t1 on tpcds.reason_t1(r_reason_id); 
m_db=# CREATE INDEX index_t2 on tpcds.reason_t2(r_reason_id);
m_db=# DROP TABLE tpcds.reason_t1;
m_db=# DROP TABLE tpcds.reason_t2;

-- 查看回收站。
m_db=# SELECT rcyname,rcyoriginname,rcytablespace FROM pg_catalog.gs_recyclebin;
           rcyname            | rcyoriginname | rcytablespace 
------------------------------+---------------+---------------
 BIN$41512338419D$87EAEB8==$0 | reason_t1     |             0
 BIN$4151233841A3$87EBBE0==$0 | index_t1      |             0
 BIN$4151233841A0$87EC6A0==$0 | reason_t2     |             0
 BIN$4151233841A4$87ED0F0==$0 | index_t2      |             0
(4 rows)

-- PURGE清除表
m_db=# PURGE TABLE tpcds.reason_t2;
m_db=# SELECT rcyname,rcyoriginname,rcytablespace FROM pg_catalog.gs_recyclebin;

-- PURGE清除索引
m_db=# PURGE INDEX tpcds.index_t1;
m_db=# SELECT rcyname,rcyoriginname,rcytablespace FROM pg_catalog.gs_recyclebin;
           rcyname            | rcyoriginname | rcytablespace 
------------------------------+---------------+---------------
 BIN$41512338419D$87EAEB8==$0 | reason_t1     |             0
 BIN$4151233841A3$87EBBE0==$0 | index_t1      |             0
(2 rows)

-- 回收所有对象
m_db=# PURGE recyclebin;
m_db=# SELECT rcyname,rcyoriginname,rcytablespace FROM pg_catalog.gs_recyclebin;
 rcyname | rcyoriginname | rcytablespace 
---------+---------------+---------------
(0 rows)

-- 删除SCHEMA。
 m_db=# DROP SCHEMA tpcds;

相关文档