Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除的SQL条目是否仍占用空间/行?_Sql_Django_Postgresql_Heroku - Fatal编程技术网

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

删除的SQL条目是否仍占用空间/行?,sql,django,postgresql,heroku,Sql,Django,Postgresql,Heroku,我正在通过Django开发一个应用程序,用户可以使用RESTful界面更新特定条目。由于所有内容都是通过JSON发布的,并且每次用户更新其条目时条目的数量都可以保持不变、减少或增加,因此我认为最好的处理方法是删除用户当前的所有条目,然后重新添加他们提交的所有条目 我用heroku来主持这个网站,对于他们的爱好数据库,他们限制行数。即使对于标准数据库,它们也会根据大小进行限制。。。我注意到,当我在Django中删除对象时,索引将永远不会重置,我理解为什么,但这是否意味着删除的行仍然会占用空间/存在

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

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

删除的SQL条目是否仍占用空间/行

在PostgreSQL中,是的,它们仍然会占用空间一段时间。您更新的行的旧版本也是如此。过了一会儿,真空吸尘器出现了,并将空间标记为可重复使用,尽管就操作系统而言,它仍在使用中。然后一段时间后,
INSERT
中的新行或
UPDATE
d行的新版本被写入旧的真空行

您可以
截断一个表,使所有行立即被清除,但这是一个要么全有,要么全无的问题

Heroku是否统计删除的行取决于它们如何实现系统的内部结构,而与它们是否仍然占用空间无关。如果非要我猜的话,我会说“不”,因为在Heroku上,你不能控制真空活动等,所以让你等他们的真空出来清理是相当不公平的


.

那么“一段时间”大约需要多长时间?取决于自动真空设置、桌子大小、数据库有多忙等。但它会在24小时内消失吗?什么是最长的假设时间?没有最长的假设时间。如果autovacuum不运行,死排可能会永远存在。如果您想了解Heroku的具体细节,那么您可能需要联系他们的支持人员,以了解死行和膨胀的原因。这篇文章表明,它们的计数是实时行(即未删除):当您运行
heroku pg:info
时,会触发真空。