跳到主要内容

清理回收站

频繁删除数据库对象并重建,会在回收站产生大量的数据,您可以通过清理回收站的方式来清理这些数据。

清理回收站主要有手动和自动两种方式。

手动清理回收站

您可以通过 PURGE 命令手动清理回收站。

注意事项

  • Purge 操作会删除对象和从属于该对象的对象(即 Database > Table > Index)。例如,Purge 数据库会删除数据库和从属于该数据库的表和表索引。

  • 当一个对象的上层对象被 Purge,那么当前回收站中关联的下一层对象也会被 Purge。

  • 执行 Purge 操作前,建议您通过回收站对待删除的对象进行确认。执行 Purge 操作后,在 seekdb 的回收站中将再也查询不到对象的信息,真实数据也最终会被作为垃圾回收。

操作步骤

  1. 管理员 root 登录到 seekdb。

    连接示例如下,连接数据库时请以实际环境为准。

    mysql -h127.0.0.1 -uroot -P2881
  2. 执行 SHOW RECYCLEBIN 语句,获取回收站中对象的名称。

    SHOW RECYCLEBIN;
    +--------------------------------+---------------+----------+----------------------------+
    | OBJECT_NAME | ORIGINAL_NAME | TYPE | CREATETIME |
    +--------------------------------+---------------+----------+----------------------------+
    | __recycle_$_1_1765784426825016 | test_db | DATABASE | 2025-12-15 15:40:26.825340 |
    | __recycle_$_1_1765785669490408 | tbl1 | TABLE | 2025-12-15 16:01:09.491488 |
    +--------------------------------+---------------+----------+----------------------------+
    1 row in set (0.003 sec)
  3. 根据业务需要,选择合适的场景,清理回收站。

    • 从回收站中物理清理指定的数据库

      PURGE DATABASE object_name;

      object_name 表示该 Schema 对象在回收站中的名称。不支持使用原始名称。

      示例如下:

      PURGE DATABASE __recycle_$_1_1765784426825016;
    • 从回收站中物理清理指定的表

      PURGE TABLE object_name;

      object_name 表示该 Schema 对象在回收站中的名称,也可以使用原始名称。使用原始名称时,如果回收站中当前有相同的多个原始名称,则清除的是最早进入回收站中的表。

      示例如下:

      PURGE TABLE __recycle_$_1_1765785669490408;
    • 从回收站中物理清理指定的索引表

      PURGE INDEX object_name;

      object_name 表示该 Schema 对象在回收站中的名称。不支持使用原始名称。

      示例如下:

      PURGE INDEX __recycle_$_100017_1673426335319344;
    • 将所有对象从回收站中彻底清除

      PURGE RECYCLEBIN;
  4. 命令执行成功后,可以再次执行 SHOW RECYCLEBIN 语句,确认回收站中的对象是否成功清理。

    SHOW RECYCLEBIN;

自动清理回收站

seekdb 支持通过配置项 recyclebin_object_expire_time 自动清理收站中过期的 Schema 对象,其默认值为 0s。其中:

  • 值为 0s 时,表示关闭自动 Purge 回收站功能。

  • 值为非 0s 时,表示 Purge 一段时间前进入回收站的对象。

有关配置项 recyclebin_object_expire_time 的更多信息,请参见 recyclebin_object_expire_time

  1. 使用 root 用户登录到 seekdb。

    连接示例如下,连接数据库时请以实际环境为准。

    mysql -h127.0.0.1 -uroot -P2881
  2. 执行以下语句,查看回收站的自动清理策略。

    SHOW PARAMETERS LIKE 'recyclebin_object_expire_time';

    查询结果如下:

    +---+-----------+-------+-------------+--------------+---------+---------+
    | name | data_type | value | info | edit_level | default_value | isdefault |
    +-----+--------------+---------+---------+-------------------+---------------+-----------+
    | recyclebin_object_expire_time | TIME | 0s | recyclebin object expire time, default 0 that means auto purge recyclebin off. Range: [0s, +∞) | DYNAMIC_EFFECTIVE | 0s | 1 |
    +------+--------------+---------+---------+-------------------+---------------+-----------+
    1 row in set (0.003 sec)
  3. 执行以下语句,开启自动清理回收站的功能并指定清理多少时间前进入回收站的对象。

    开启自动清理回收站功能,并回收 7 天前进入回收站的 Schema 对象,示例语句如下:

    ALTER SYSTEM SET recyclebin_object_expire_time = '7d';
  4. (可选)完成后,可以执行以下语句,确认回收站中符合条件的对象是否被清理。

    SHOW RECYCLEBIN;

相关文档

更多回收站相关的内容,请参见以下信息: