PostgreSQL 9.3 will add pg_isready script to test PostgreSQL server if allowed to connect
背景 使用过Oracle数据库的朋友大概对tnsping有过了解, 它是Oracle用来测试数据库tnsnames.ora配置项连通性的工具之一. PostgreSQL 9.3将要加入这样一个客户端, 名为pg_idready. 也是用于检测数据库的连通性, 参数如下 : digoal@db-172-16-...
背景 使用过Oracle数据库的朋友大概对tnsping有过了解, 它是Oracle用来测试数据库tnsnames.ora配置项连通性的工具之一. PostgreSQL 9.3将要加入这样一个客户端, 名为pg_idready. 也是用于检测数据库的连通性, 参数如下 : digoal@db-172-16-...
背景 PostgreSQL 将针对foreign key场景的一致性约束手段进行优化, 目前依赖对references表的对应行加RowShareLock锁保障一致性. 有几大的锁冲突弊端. 优化后将降低锁冲突, 除关联字段, 其他字段都不会产生冲突. 补丁如下 : https://commitfest.p...
背景 Instagram 使用PostgreSQL数据库, 2012year中国PostgreSQL用户大会的时候他们来做过一次交流。 现在Instagram的月度活跃用户数已经超过9000万,每天照片上传量超4000万。 sharding, 一个非常关键的算法是如何产生所有节点全局唯一的ID。 Insta...
背景 PostgreSQL 支持bit或varbit类型. 通过set_bit函数可以设置比特变量的其中1个比特. 例如 : digoal=# select set_bit('11111'::varbit, 1, 0); set_bit --------- 10111 (1 row) ...
背景 TOAST表的设计,在一个需要频繁更新(小字段更新)操作的表中非常有用,可以大大降低不必要的大字段带来的IO和CPU(大字段上有索引时) 。 优化场景可参考 : http://blog.163.com/digoal@126/blog/static/16387704020130931040444/ 但是...
背景 这篇BLOG主要针对如下场景进行优化 : 1. 表的行较大, 例如1KB以上. 2. 索引较多, 如4个以上. 3. 表的记录大部分都要被更新, 例如1个1000万的表每天有700W条记录要被更新. 4. 表包含大字段, 如text类型的字段, 单个字段可能占用1KB左右. 这种字段也有更新, 但是...
背景 关于PostgreSQL的分区表监控, 如下 : http://blog.163.com/digoal@126/blog/static/16387704020130433036377/ 将表名转成日期的方法举例 : 方法1 : 用到规则表达式的替换和转数组函数. select regexp_...
背景 当管理的数据库越来越多, 分区表也越来越多, 一个人可能要维护几十万的分区表. 对于分表的监控显得尤为重要. 本文基于PostgreSQL 9.2 进行讲解, 其他版本可能需要略微调整. PostgreSQL 的分区表除了性能方面需要加强以外, 管理方面也需要加强. 例如, 一、分区表的气泡, 例如...
背景 使用PostgreSQL 的朋友可能遇到过类似ERROR: invalid byte sequence for encoding “UTF8”: 0x00 的报错. 这是什么原因呢? 本文就来解释一下 : 首先我们这里说的是UTF8字符集, 我的测试环境如下 : ocz@db-172-16-3-15...
背景 PostgreSQL 函数的稳定性, 以前写过几篇BLOG讲述, 见参考部分. 本文再细化并举例说明一下他们的差别. 首先函数稳定性分三种 : volatile stable immutable 首先创建1个测试表 : digoal=> create table test (i...