1

我们使用一个 CMS 系统(我猜它在后台使用一个 oracle 数据库)。CMS(因此数据库将数千张图像保存为 blob)问题是当我们使用自定义删除工具在 CMS 中进行批量删除时(预计数据库大小会变小)但 Zabbix 监控我们看到数据库大小神秘地开始增加!

问题可能出在哪里的任何“想法”?也许数据库需要更新或清除命令?或者它是一个试图备份所有已删除内容的 CMS 错误?但这也没有意义。

谢谢

4

1 回答 1

2

乍一看,这似乎令人惊讶,但是一旦您考虑到数据库的设计目的,就不是这样了。数据库是一种在磁盘上存储数据的高级方法,专门针对以下任务进行了优化:

  1. 快速访问数据。
  2. 快速添加/删除数据。

这两个要求的一个必然结果是,当您删除某些内容时,不会立即释放数据。在(1)的情况下,那是因为数据以表格的形式存储在磁盘上,以便快速访问;为了让 Oracle 在您删除一些记录时释放磁盘空间,所有内容都必须移动并重新组织。在 (2) 的情况下,当您删除事物时,Oracle 预计您将来可能会添加新记录。因此,它节省了空间,以便在您添加新内容时可以快速再次使用它。

所有这一切意味着您不应该仅仅因为您删除了一些记录而期望磁盘存储空间减少。(正如 Albin Sunnanbo 所指出的,如果有轻微的增加,很可能是由于事务日志)。

如果您需要减少数据库正在使用的磁盘空间,有多种策略可以直接告诉数据库这样做。我不是 Oracle 用户,但这个讨论似乎很有帮助。

于 2012-10-09T08:15:22.537 回答