PostgreSQL 9.5 new feature - table mview data sample
背景 PostgreSQL 9.5支持的新特性,数据采样。有了这个功能,如果能结合pg_dump使用的话,可以为比较大的生产数据库创建较小的测试环境。当然,如果是这样的话采样还需要考虑数据关联的问题。 用户可以自定义采样方法,或者使用系统自带的两种采样方法(基于所有数据块的选择性采样,以及基于全表的选择性采样)...
背景 PostgreSQL 9.5支持的新特性,数据采样。有了这个功能,如果能结合pg_dump使用的话,可以为比较大的生产数据库创建较小的测试环境。当然,如果是这样的话采样还需要考虑数据关联的问题。 用户可以自定义采样方法,或者使用系统自带的两种采样方法(基于所有数据块的选择性采样,以及基于全表的选择性采样)...
背景 今天看到一个9.5的patch,是和pgstattuple插件统计有关的,正常情况下,调用pgstattuple统计时需要扫全表。 always performs a full-table scan and returns an exact count of live and dead tuples (a...
背景 以前写过一些PostgreSQL审计相关的文章,有些是通过系统自带的参数来配置审计功能的,还有是通过扩展模块来配置审计的,还有通过事件触发器,或者触发器来实现跟踪和审计的。如下: 1. PostgreSQL自带的日志审计,实现语句级别,数据库级别,用户级别的审计。 弊端是审计颗粒度太大。 http:/...
背景 PostgreSQL的函数是原子操作,所以不能像Oracle那样在函数中实现分段提交。 但是如果你要从Oracle迁移到PostgreSQL的话,必然会面临这样的问题,那么怎么办呢? 有几种方法可以来实现,下面是例子: 1. 通过exception来实现分段提交。 create table tbl ...
背景 前面一篇文章我简单的介绍了一下如何找到出现锁等待的会话,以及它到底在等那个会话,在等的这个会话现在在执行什么操作,事务开启多久了? 参考: http://blog.163.com/digoal@126/blog/static/1638770402015410104726197/ 锁在数据库中是一个非常...
背景 PostgreSQL和大多数传统RDBMS一样,都设计了大量的锁来保证并发操作的数据一致性。 同时PG在设计锁等待时,以队列方式存储等待锁。 参考 ProcSleep()@src/backend/storage/lmgr/proc.c http://blog.163.com/digoal@126/b...
背景 在跑benchmark时,遇到瓶颈如何分析 问题出在哪里呢? 在编译PostgreSQL 时可以使用–enable-profiling开关,打开GCC的profile输出,用作诊断。 《Greenplum PostgreSQL –enable-profiling 产生gprof性能诊断代码》 另外,也...
背景 Change the WAL record format to allow splitting the record header across pages (Heikki Linnakangas) The new format is slightly more compact, and is m...
背景 A better compressed bitset Bitsets, also called bitmaps, are commonly used as fast data structures. Unfortunately, they can use too much memory. To compe...
背景 数据库可靠性从何而来? 数据库崩溃后如何恢复,从什么位置开始恢复? 数据库检查点是什么? 检查点要干些什么? 为什么脏数据较多时,检查点会对性能有一定的影响? 什么是full page write? 相信这些问题是搞数据库的同学都想搞明白的。 接下里的一系列文章,围绕检查点展开讲解,讲一讲检查...