【问题标题】:DB2 - Reclaiming disk space used by dropped tablesDB2 - 回收已删除表使用的磁盘空间
【发布时间】:2015-01-14 01:34:28
【问题描述】:

我有一个记录到 DB2 数据库的应用程序。每个日志都存储在一个每日表中,这意味着我有几个表,每天一个。

由于应用程序运行了相当长的时间,我删除了一些较旧的日常表,但磁盘空间没有回收。

我知道这在 DB2 中是正常的,所以我看了一下,发现可以使用以下命令来回收空间:

db2 alter tablespace <table space> reduce max

由于存储每日日志表的表空间名为USERSPACE1,所以我成功执行了以下命令:

db2 alter tablespace userspace1 reduce max

可惜DB2实例使用的磁盘空间还是一样...

我在某处读到过 REORG 命令可以执行,但我看到它用于重组表。由于我删除了表,我该如何使用 REORG

还有其他方法吗?

谢谢

【问题讨论】:

  • 答案取决于 DB2 版本和表所在的表空间类型。

标签: database db2 relational-database


【解决方案1】:

减小表空间的大小是非常复杂的。对于同一个表,表的范围(连续页集;表空间分配单位)不是按顺序分布的。重组表时,行将按页组织,新页将正常写入表空间的末尾。有时,高水位线会增加,您的表空间会更大。

您需要从一个表空间重组所有表才能“碎片整理”所有表。然后,您必须执行新的重组才能使用以前的空间,因为它应该是表空间中的一个空白空间。

但是,有许多标准会影响表空间中表的组织: 创建新的扩展区(新行、由于更新导致行溢出);重组后可以激活压缩。

您可以做的是为每个表空间分配几个或只分配一个表;但是,您会浪费大量空间(开销、空白页面等)

您使用的命令是自动执行此操作的方式,但它并不总是按预期工作:http://www-01.ibm.com/support/knowledgecenter/SSEPGG_10.5.0/com.ibm.db2.luw.admin.dbobj.doc/doc/c0055392.html

如果要查看表空间中表的分布情况,可以使用db2dart。然后,您可以知道要重组(移动)哪个表。

【讨论】:

    【解决方案2】:

    对不起各位,

    我在原帖中提到的命令确实有效,但空间检索非常缓慢。

    感谢您的帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 2011-08-24
      • 1970-01-01
      • 2019-04-29
      • 2014-06-29
      相关资源
      最近更新 更多