sql - 删除的 SQL 条目是否仍然占用空间/行?

标签 sql django postgresql heroku

我正在通过 Django 开发一个应用程序,用户可以在其中使用 RESTful 界面更新特定条目。由于所有内容都是通过 JSON 发布的,并且每次用户更新条目时条目数都可以保持不变、减少或增加,我认为处理此问题的最佳方法是删除所有用户的当前条目,然后重新添加他们提交的所有条目。

我使用 heroku 来托管网站,对于他们的爱好数据库,他们限制行数。即使对于他们的标准数据库,他们也会根据大小进行限制......我注意到当我在 Django 中删除对象时,索引永远不会重置,我明白为什么,但这是否意味着删除的行仍然占用空间/存在?如果有帮助,我正在使用 PostgreSQL

最佳答案

Do deleted SQL entries still take up space/rows?

在 PostgreSQL 中,是的,它们仍然会占用一段时间的空间。您 UPDATEd 的旧版本行也是如此。一段时间后 VACUUM 出现并将该空间标记为可重复使用,尽管就操作系统而言它仍在“使用中”。稍后,来自 INSERT 的新行或 UPDATEd 行的新版本将覆盖旧的 vacuum'd 行。

您可以TRUNCATE 一个表,导致所有行被立即清除,但这是一个全有或全无的事情。

Heroku 是否计算删除的行数取决于他们如何实现他们系统的内部结构,并且与他们是否仍然占用空间无关。如果我不得不猜测我会说“不”,因为在 Heroku 上你无法控制 vacuum 事件等,所以让你等待他们的 vacuum 抽空进行清理是相当不公平的。

Heroku has some documentation on the topic here .

关于sql - 删除的 SQL 条目是否仍然占用空间/行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23904660/

相关文章:

mySQL - 两个表之间的差异

sql - T SQL Case Statement with between to Show ALL

Django-Postgres : length of CharField as primary key

python - Django InlineModelAdmin - 根据保存请求设置内联字段(自动设置用户字段)(save_formset vs save_model)

postgresql - 将在Docker容器中运行的PostgreSQL服务器连接到Wild-fly Docker容器?

r - 使用 dplyr 从临时 postgres 表创建和检索数据

python - 清理坏行的 Postgres 表

sql - 识别数据库中的 sibling

MySQL - 如何选择最小/最大日期差异超过 3 年的 id

python - 使用框架(尤其是 Django)进行 Web 开发的一些好的初学者指南是什么?