如何判断Postgres 9.x中的autovacuum守护进程是否正在运行并维护数据库集群?
我在pg_toast上运行了一个autovacuum进程:
select query, from pg_stat_activity where query like '%autov%';
"autovacuum: VACUUM pg_toast.pg_toast_15404513 "
Run Code Online (Sandbox Code Playgroud)
我如何找出这个pg_toast所属的表/索引/什么?或者autovacuum正在处理其他事情?
在8.x之前的日子里,我在Linux上运行了大量的PGSQL数据库,并通过维护脚本显式清除了数据库.
当8.x出现时,我没有移动到那些系统上的autovacuum,因为它工作正常,所以不需要改变任何东西.所以我不是autovacuum专家.
现在在8.x之后的时代,我发现自己在Windows Server 2003或更新版本上运行了一些PGSQL数据库.
看起来autovacuum 应该正在运行,因为我们已按照说明操作并将其保留在.conf文件中.
但是,将PGAdmin连接到数据库会提示我们应该运行VACUUM.
如何判断autovacuum守护程序是否正在运行并负责数据库并正确吸尘?
有一个autovacuum查询需要很长时间才能运行,并阻止alter query运行.
在完成之前杀死这个autovacuum进程有什么危险?
PID QUERY 16967 | autovacuum: VACUUM public.articles (to prevent wraparound)
以下是我如何杀死它:
select pg_terminate_backend(16967) from pg_stat_activity;
Run Code Online (Sandbox Code Playgroud) 我在Ubuntu上运行PostgreSQL 9.2.autovacuum进程正在服务器上运行.
数据库负载很重,1000次添加和100次删除每天,但似乎autovacuum没有启动.
原木中没有任何与真空有关的东西.
干 ps -ef | grep -i vacuum
生产: postgres 1406 1130 0 Oct13 00:00:14 postgres: autovacuum launcher process
运行查询SELECT last_autovacuum , last_autoanalyze FROM pg_stat_user_tables;
在最后一个autovacuum列中不生成任何记录,并且2在suto_analyze列中输入.
postgresql.conf的相关部分是:
#------------------------------------------------------------------------------
# AUTOVACUUM PARAMETERS
#------------------------------------------------------------------------------
autovacuum = on # Enable autovacuum subprocess? 'on'
# requires track_counts to also be on.
log_autovacuum_min_duration = 250 # -1 disables, 0 logs all actions and
# their durations, > 0 logs only
# actions running at least this number
# of milliseconds.
autovacuum_max_workers …Run Code Online (Sandbox Code Playgroud) 我想在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
如何在PostgreSQL中启用autovacuum?我理解目的,我找不到关于如何启用它的简单答案.
我的Openshift在线墨盒上有Postgres 9.2.使用Pgadmin3,我已经启用(通过勾选方框)postgresql.conf的autovuum设置.但是,autovacuum似乎没有运行.
这是我有的:
ps -ef | grep -i vacuum
没有显示自动真空过程.
使用psql控制台,show autovacuum表示其值为ON
使用psql控制台,SELECT schemaname, relname, last_vacuum, last_autovacuum from FROM pg_stat_user_tables;在last_vacuum和last_autovacuum列中没有给出任何值,即使我使用pgadmin3进行了手动真空维护功能.
pgAdminIII中db的属性选项卡表示'未运行'的AUTOVACUUM值
我错过了什么?
编辑
我也试图在服务器上找到文件时无法访问Openshift Online上的postgresql.conf - 希望手动编辑文件而不是使用pgAdminIII.
- 发现这个https://www.openshift.com/forums/openshift/how-do-i-set-maxpreparedtransactions-on-my-postgresql-cartridge 我现在能够查看/编辑我的postgresql.conf.显然autovacuum已经打开,因此conf具有正确的设置.
当pg_ctl restart -m fast 我遇到问题时
LOG: could not bind socket for statistics collector: Permission denied
LOG: trying another address for the statistics collector
LOG: could not bind socket for statistics collector: Permission denied
LOG: trying another address for the statistics collector
LOG: could not …Run Code Online (Sandbox Code Playgroud) 在PostgreSQL 9.5中,我决定创建一个物化视图“效果”,并计划每小时进行一次并发刷新,因为我希望它始终可用:
REFRESH MATERIALIZED VIEW CONCURRENTLY effects;
Run Code Online (Sandbox Code Playgroud)
在开始的时候,一切都运行良好,我的实例化视图令人耳目一新,磁盘空间使用大致保持不变。
但是,一段时间后,磁盘使用率开始线性增长。
我已经得出结论,这种增长的原因是物化视图,并从该答案中运行查询以得到以下结果:
what | bytes/ct | bytes_pretty | bytes_per_row
-----------------------------------+-------------+--------------+---------------
core_relation_size | 32224567296 | 30 GB | 21140
visibility_map | 991232 | 968 kB | 0
free_space_map | 7938048 | 7752 kB | 5
table_size_incl_toast | 32233504768 | 30 GB | 21146
indexes_size | 22975922176 | 21 GB | 15073
total_size_incl_toast_and_indexes | 55209426944 | 51 GB | 36220
live_rows_in_text_representation | 316152215 | 302 MB | 207
------------------------------ …Run Code Online (Sandbox Code Playgroud) postgresql materialized-views vacuum postgresql-9.5 autovacuum
我有大表,我只有插入和选择,所以当这个表的autovacuum运行时 - 系统非常慢.我已关闭特定表的autovacuum:
ALTER TABLE ag_event_20141004_20141009 SET (autovacuum_enabled = false, toast.autovacuum_enabled = false);
ALTER TABLE ag_event_20141014_20141019 SET (autovacuum_enabled = false, toast.autovacuum_enabled = false);
Run Code Online (Sandbox Code Playgroud)
在此之后(一段时间之后),我看到:
select pid, waiting, xact_start, query_start,query from pg_stat_activity order by query_start;
18092 | f | 2014-11-04 22:21:05.95512+03 | 2014-11-04 22:21:05.95512+03 | autovacuum: VACUUM public.ag_event_20141004_20141009 (to prevent wraparound)
19877 | f | 2014-11-04 22:22:05.889182+03 | 2014-11-04 22:22:05.889182+03 | autovacuum: VACUUM public.ag_event_20141014_20141019 (to prevent wraparound)
Run Code Online (Sandbox Code Playgroud)
我做了什么shell来切换这个表的autovacuuming?