也谈PostgreSQL的Vacuum机制及其最佳实践

原作者:PostgreSQL中文社区 创作时间:2019-01-08 20:02:24+08   采编:redraiment

发布时间:2019-01-08 20:02:24

欢迎大家踊跃投稿,投稿信箱:press@postgres.cn

 评论:0    浏览:2981

1. 作者简介

唐成,网名 osdba,PostgreSQL中国用户会副主席,《PostgreSQL修炼之道:从小工到专家》作者,《PostgreSQL 9X之巅(原书第2版)》译者之一,杭州乘数科技有限公司创始人。

2[……]

查看更多……

postgresql中pg_log、pg_clog和pg_xlog

pg_log

这个日志一般是记录服务器与DB的状态,比如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,发生checkpoint过于频繁等的告警信息,诸如此类。linux自带的路径一般在/var/log/postgres下面。该日志有.csv格式和.log。个人建议用前一种,因为一般会按大小和时间自动切割,毕竟查看一个巨大的日志文件比查看不同时间段的多个日志要难得多。另外这种日志是可以被清理删除,压缩打包或者转移,同时并不影响DB的正常运行。当我们有遇到DB无法启动或者更改参数没有生效时,第一个想到的就是查看这个日志。

pg_xlog

这个日志是记录的Postgr[……]

查看更多……

硬核-深度剖析PostgreSQL数据库“冻结炸弹”原理机制

本文转载自“数据库架构之美”公众号

冻结(FREEZE),相信熟悉pg的人都对这个词不陌生,因为冻结过程对数据库的资源消耗极大,影响业务的正常运行,所以也被称为“冻结炸弹”。网上关于冻结的文章也比较多,本文就系统性的介绍一下冻结过程的原理以及如何预防。

事务号回卷问题

先介绍下事务号回卷的问题,这也是为什么需要冻结的根本原因。我们知道,postgresql数据库使用32位事务号,最大容纳42亿左右的事务号,事务号是循环使用的,当事务号耗尽后又会从3开始循环使用。事务环被分为两个半圆,当前事务号过去的21亿事务属于过去的事务号,当前事务号往前的21亿属于未来的事务号,未来的事务[……]

查看更多……

Vacuum使用心得

最近在优化PG,在vacuum过程中发现了  (to prevent wrap)。于是花了一周实践深入了解并实践了一把。下面把这一周的心得分享一下,以备遇到同样情况的 朋友以及将来的自己 使用。

数据库总是不断地在执行删除,更新等操作。良好的空间管理非常重要,能够对性能带来大幅提高。在postgresql中用于维护数据库磁盘空间的工具是VACUUM,其重要的作用是删除那些已经标示为删除的数据并释放空间。

基础知识前述:

在PostgreSQL中,每个事务都有一个唯一的事务ID,被称为XID。注意:除了被BEGIN -COMMIT/ROLLBACK包裹的一组[……]

查看更多……

Kafka消费组(consumer group)

转载自: https://www.cnblogs.com/huxi2b/p/6223228.html

二、消费者组 (Consumer Group)

1 什么是消费者组

其实对于这些基本概念的普及,网上资料实在太多了。我本不应该再画蛇添足了,但为了本文的完整性,我还是要花一些篇幅来重谈consumer group,至少可以说说我的理解。值得一提的是,由于我们今天基本上只探讨consumer group,对于单独的消费者不做过多讨论。

什么是consumer group? 一言以蔽之,consumer group是kafka提供的可扩展且具有容错性的消费者机制。[……]

查看更多……

再见Docker!是时候使用Podman、Skopeo和Buildah新容器架构了

缘起:

很多人可能遇到过开机重启时,由于Docker守护程序在占用多核CPU使用100%C使用的情况,导致所有容器都无法启动,服务都不能用的情况。很悲催的是这事儿虫虫也遇到了,之前文章中虫虫介绍过利用Docker重构WP博客的新架构。由于VPS机器不是很稳定,时常会重启,重启时候就会遇到这个事情,VPS负载很高,容器都没有起来,网站就无法访问了。这时候只能杀掉所有容器并重启守护进程,才能恢复。经过了解该问题是由于Docker守护进程引起,而且Docker守护进程是以root特权权限启动的,是一个安全问题,那么有什么方法解决呢?

为什么Docker需要一个守护进程呢?

Podm[……]

查看更多……

Postgresql 逻辑结构和物理结构

1.数据库的逻辑结构

Database cluster: 由postgresql server管理的数据库的集合,下面由多个database组成

databsase: 由各种数据库对象构成,比如下图中的table,indexes, view,function,sequence…

所有数据库对象都有各自的oid(object identifiers),oid是一个无符号的四字节整数,相关对象的oid都存放在相关的system catalog表中,比如数据库的oid和表的oid分别存放在pg_database,pg_class表中。

如下所示:

2.数据库[……]

查看更多……