阅读Amazon Redshift documentatoin我在某个400GB的表上运行了一个VACUUM,之前从未进行过清理,以提高查询性能.不幸的是,VACUUM导致该表增长到1.7TB(!!)并使Redshift的磁盘使用率达到100%.然后我尝试通过在超级用户队列中运行CANCEL查询来停止VACUUM(通过运行"set query_group ='superuser';"输入它)但是虽然查询没有引发错误,但这对于继续运行的真空查询
我能做什么?
使用PostgreSQL的-9.2,在这一刻上午发现的表已经dead_tuples使用下面的查询
select relname from pg_stat_user_tables where n_dead_tup > 0
Run Code Online (Sandbox Code Playgroud)
这将重新调整表名,然后我将运行
VACUUM VERBOSE ANALYZE <table_name>
Run Code Online (Sandbox Code Playgroud)
这是一个好方法还是我需要改变它,如果是这样,请给我一些方法
谢谢
I am running a vacuum on a very large table.
When I run it, it says:
bacula=# VACUUM FULL VERBOSE file_partition_19
bacula-# ;
INFO: vacuuming "public.file_partition_19"
INFO: "file_partition_19": found 16242451 removable, 21024161 nonremovable row versions in 900380 pages
DETAIL: 0 dead row versions cannot be removed yet.
CPU 5.14s/14.42u sec elapsed 19.61 sec.
VACUUM
Time: 163784.767 ms
bacula=#
Run Code Online (Sandbox Code Playgroud)
When it does this, it shows up to the CPU line fairly quickly, then waits a long time before it shows the …
我想在Postgres中利用仅索引扫描的强大功能,并尝试使用一个表:
CREATE TABLE dest.contexts
(
id integer NOT NULL,
phrase_id integer NOT NULL,
lang character varying(5) NOT NULL,
ranking_value double precision,
index_min integer,
index_max integer,
case_sensitive boolean,
is_enabled boolean,
is_to_sync boolean NOT NULL DEFAULT true
);
insert into dest.contexts select * from source.contexts;
alter table dest.contexts
add constraint pk_contexts primary key (id, phrase_id, lang);
CREATE INDEX idx_contexts_
ON dest.contexts
USING btree
(id, is_enabled, lang, phrase_id, ranking_value, index_min, index_max, case_sensitive);
Run Code Online (Sandbox Code Playgroud)
索引涵盖了我想在下一个查询中使用的所有列:
explain analyze
select ranking_value, index_min, index_max, case_sensitive
from dest.contexts
where …Run Code Online (Sandbox Code Playgroud) postgresql vacuum sql-execution-plan postgresql-9.4 autovacuum
我有一个 > 34 GB 的 sqlite3 数据库。VACUUM当我为此数据库执行显式命令时,该过程花费的时间太长。所以我想知道当我强迫它退出VACUUM任务时会发生什么。
可以认为VACUUM是原子事务吗?
我在生产中继承了一个 PostgreSQL 数据库,其中有一张大小约为 250 GB 的表。它只有大约一万行,我估计不超过 20 MB。
AUTOVACUUM由于某个时间已关闭,该表变得如此大。(我知道为什么这样做。它将被重新激活,原始问题已得到解决,所以这不是问题的一部分。)
我们的问题是许多查询需要很长时间。例如,aSELECT count(*) FROM foo;大约需要 15 分钟。
现在,在考虑了其他选项之后,我想VACUUM FULL在桌面上运行一个。我尝试估计完成此操作所需的持续时间,以便我可以计划维护时段。
根据我的理解,VACUUM FULL创建一个新表,将所有活动元组复制到其中,并用此副本替换原始表。
我的估计是,这个过程不会比像上面这个表上的简单查询花费更长的时间,因为实时数据的总体大小和数量都非常小。
您是否同意我对“VACUUM FULL”的运行时间的期望在某种程度上是现实的?如果没有,为什么不呢?
是否有估计VACUUM FULL持续时间的最佳实践?
好吧,这个问题几乎总结了它.我的数据库活动非常密集,我想以编程方式发布真空分析.但是我收到一条错误,指出查询无法在事务中执行.还有其他方法吗?
我有一个Postgres 9.0数据库,我经常采用它的数据转储.
这个数据库有很多索引,每次我恢复转储postgres启动后台任务真空吸尘器(是吗?).该任务消耗大量处理时间和内存来重新创建已还原转储的索引.
我的问题是:
谢谢,安德烈
我找到了一个查询来查看真空吸尘器运行的时间,但不是当前正在运行的真空吸尘器.(http://heatware.net/databases/postgres-tables-auto-vacuum-analyze/)
有没有要完成此任务的查询?我知道我可以点击pg_stat_activity,但有些真空吸尘器没有表名,而是有pg_toast.pg_toast_3621837,所以这不会100%有效.
如何在PostgreSQL中启用autovacuum?我理解目的,我找不到关于如何启用它的简单答案.
vacuum ×10
postgresql ×8
autovacuum ×2
sql ×2
indexing ×1
psycopg2 ×1
python ×1
sqlalchemy ×1
sqlite ×1