postgresql vacuum操作
Posted Django_1987
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了postgresql vacuum操作相关的知识,希望对你有一定的参考价值。
PostgreSQL数据库管理工作中,定期vacuum是一个重要的工作. vacuum的效果:第一点的原因是PostgreSQL数据的插入,更新,删除操作并不是真正放到数据库空间.如果不定期释放空间的话,由于数据太多,查询速度会巨降. 第二点的原因是PostgreSQL在做查询处理的时候,为了是查询速度提高,会根据统计数据来确定执行计划.如果不及时更新的话,查询的效果可能不如预期. 第三点的原因是PostgreSQL中每一个事务都会产生一个事务ID,但这个数字是有上限的.
虽然在新版本的Postgresql中有自动的vacuum,但是如果是大批量的数据IO可能会导致自动执行很慢,需要配合手动执行以及自己的脚本来清理数据库。
1.
-d dbname
-f/--full
-t table
-z/--analyze
4. 如何查询我的XID是否接近临界值的命令: select age(datfrozenxid) from pg_database; 或者: select max(age(datfrozenxid)) from pg_database;

5. 然而我们关心的是哪一个大的表组要真正的vacuum: SELECT relname, age(relfrozenxid) as xid_age,
ORDER BY age(relfrozenxid) DESC LIMIT 20; 这个命令是查询按照最老的XID排序,查看大于 1G 而且是排名前20的表。 下面是一个例子:
------------------------+-----------+------------
以上很多内容主要参考国外一个数据库大师的博客,如果有想深入研究的可以直接参考下面链接: http://www.databasesoup.com/2012/09/freezing-your-tuples-off-part-1.html
以上是关于postgresql vacuum操作的主要内容,如果未能解决你的问题,请参考以下文章