问题标签 [vacuum]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - PostgreSQL如何在使用--jobs参数时找到导致真空死锁的原因
如何在 PostgreSQL 9.5 中找到导致死锁错误/失败的原因,当使用选项 --jobs 对数据库执行完全真空数据库以并行运行完全真空时。
我只是得到一些进程号和表名......如何防止这种情况,以便我可以成功地并行对数据库进行完全真空处理?
greenplum - 我不应该一起运行真空分析吗?我应该单独运行真空和分析吗?假设已完成大量删除和更新
假设在 GP 表上完成大量删除和更新。
我不应该一起运行真空分析吗?我应该单独运行真空和分析吗?GP 最佳实践文档说“不要运行真空分析” http://gpdb.docs.pivotal.io/4300/pdf/GPDB43BestPractices.pdf
我运行真空分析时它的运行顺序是什么?是否有围绕订单运行真空和分析的最佳实践?为什么 Pivotal 说不要同时运行它们?
postgresql - 将列类型从 int 更改为 bigint 可以释放空间?
我有一个int
类型列的表,在一个大约 15 M 行的表中。
操作系统 windows 7 和 C 盘(安装了 postgres)显示:
59 GB 免费 238 GB
然后我将此列类型更改为bigint
:
现在,C盘:
61 GB 免费 238 GB
如何释放 2 GB?看起来这bigint
将占用更少的空间int
?或者发生了什么?
目前这台机器(这是本地/家庭计算机)上没有其他进程。
amazon-redshift - AWS Redshift Vacuum 返回错误:断言
尝试清理 Redshift 集群中的表会返回:
错误:错误:断言
对于其他表真空工作得很好。该表相当大,但针对它运行的查询似乎有效。
知道如何获取有关问题的更多信息并尝试修复吗?我应该尝试制作表格的副本(考虑到表格的大小,可能是一夜之间的工作)?
谢谢你的帮助。
postgresql - 为什么“完成”后真空完全等待?
我在一张非常大的桌子上抽真空。
当我运行它时,它说:
当它这样做时,它会CPU
很快显示到该行,然后等待很长时间才能显示最后两行(+提示)。这反映在时间上的差异 - “经过 19.61 秒”,与 163 秒的“时间:”相比(因为我设置了显示\timing on
)。
虽然我没有给它们计时,但两个时间都差不多 - 启动命令,等待 20 秒,然后显示到“CPU”行,然后等待大约 3 分钟,然后打印其余部分。
这是正常的吗?为什么会这样?
postgresql - pg_toast 表在 autovacuum 后没有减小
我在 Postgresql 9.3 上。
我有一个巨大的 pg_toast 表,pg_toast_675632
占用 27 GB。
除非我有误解,否则它pg_toast_675632
是如此之大,因为我json
在数据表中有一个大的列pg_toast_675632
与my_table
. 所以我大量简化了 json my_table
(即从 100 个元素的 json 到 2-5 个元素)。但是,在 autovacuum 之后pg_toast_675632
仍然是 27 GB。这是因为 autovacuum 不会将回收的空间返回到磁盘吗?请参阅此链接中 23.1.2 的第 3 段。
- 那么根据上面链接中的文档,我需要手动运行
VACUUM (FULL) pg_toast_675632
吗?
我知道这VACUUM (FULL)
需要很长时间,并且会在pg_toast_675632
此期间锁定 from 写入。
- 有哪些风险
VACUUM FULL pg_toast_675632
?这是否等同于锁定my_table
,因为这pg_toast-675632
是相关的?
postgresql - Postgres:我们总是需要至少 3-4 倍释放最大表的空间吗?
我们正在使用 Postgres 存储约 2.000.000.000 个样本。这最终出现在具有约 500 个 mio 条目和约 100GB 大小的表中。
我想要做什么:例如更新表格条目:UPDATE table SET flag = true;
在此之后,表是原来的两倍,即 200GB 为了取回空间(存储在 SSD 上),我们:“VACCUM FULL table”
不幸的是,此步骤再次需要大量空间,导致真空由于剩余空间太少而失败。
我的问题: 这是否意味着,为了只进行一次 UPDATE 查询并为该数据库中的其他表取回空间,我们需要至少 300-400GB 的空间用于 100GB 表?
sqlite - sqlite3 在触发器中执行真空时出现语法错误
我正在使用 sqlte3.8.8,试图创建一个触发器来清理旧数据。这是我输入的SQL:
但是我在“vacuum;”上遇到了语法错误。但是,它在 sqlite 命令行中运行良好。
是不是不能在触发器中使用“真空”?
postgresql - PostgreSQL 清理一张大表
我有 Postgres 9.4.7,我有一个大表 ~100M 行和 20 列。表查询是每分钟 1.5k 次选择、150 次插入和 300 次更新,但没有删除。这是我的自动真空配置:
autovacuum_analyze_scale_factor 0
autovacuum_analyze_threshold 5000
autovacuum_vacuum_scale_factor 0
autovacuum_vacuum_threshold 5000
autovacuum_max_workers 6
autovacuum_naptime 5s
在我的情况下,数据库几乎总是处于真空状态。当一个吸尘会话结束时,另一个开始。
所以主要问题是:有没有一种常用的方法来清理大桌子?
这里还有一些其他问题。
标准真空不扫描整个表,“分析”只扫描 30k 行。所以在相同的负载下,我应该有一个恒定的执行时间,是真的吗?我真的需要分析表格吗?频繁的“分析”能否对大表的查询计划进行任何有用的更改?
postgresql - 将截断的记录移动到 Postgresql 9.5 中的另一个表
问题如下:从一个表中删除所有记录,然后将它们插入到另一个表中。
我有一个按日期标准分区的表。为了避免对每条记录一个一个地进行分区,我将数据收集在一个表中,并定期将它们移动到另一个表中。复制的记录必须从第一个表中删除。我正在使用带有 RETURNING 的 DELETE 查询,但副作用是 autovacuum 需要做很多工作来清理原始表中的混乱。
我正在尝试实现相同的效果(复制和删除记录),但没有为真空机制创建额外的工作。
当我删除所有行(通过删除不带 where 条件)时,我在考虑TRUNCATE,但它不支持 RETURNING 子句。另一个想法是以某种方式配置表,在删除操作时自动从页面中删除元组,而无需等待真空,但我没有找到是否可能。
你能建议一些我可以用来解决我的问题的东西吗?