Recent Posts

如何按拼音排序 - 数据库本土化特性(collate, ctype, …)

4 minute read

背景 数据库为了支持国际化,通常会涉及到collate, ctype的概念。 初始化数据库集群时,可以设置如下参数,用于设置数据库的字符串排序、字符归类方法、数值\日期\时间\货币的格式等。 LC_COLLATE String sort order ...

如何在PostgreSQL中调试plpgsql存储过程(pldebugger, pldbgapi)

3 minute read

背景 PostgreSQL支持多种存储过程语言,例如plpgsql, C, plpython, plperl, pltcl, pljava, 等等。 用户可以使用这些存储过程语言,创建对应的函数或存储过程(returns void)。 那么如何调试PostgreSQL的存储过程呢?社区提供了一个插件pldeb...

如何设置数据库的LC_COLLATE, LC_CTYPE, ENCODING, TEMPLATE

4 minute read

背景 PostgreSQL实例支持创建多个数据库,创建数据库时,可以指定模板库,并为每个数据库设置不同的字符集、本地化collate, 货币等属性。 接下来举例讲述CREATE DATABASE的具体使用方法。 一、CREATE DATABASE语法 Command: CREATE DATABASE ...

geohash vs PostGIS

3 minute read

背景 业界有几种地理位置的表示方法。 通常我们使用经纬度表示地球上的位置,PostgreSQL的PostGIS可以很好的描述这种类型,包括海拔在内。使用最为广泛,精度、功能最高的应该是PostGIS。 但是并不是所有的数据库都有这样的技术(或者实现难度的问题导致了很多数据库在初期会选择较为简单的geohash...

PostgreSQL 10.0 preview 功能增强 - 串行隔离级别 预加锁阈值可控

1 minute read

背景 PostgreSQL 串行隔离级别中一个重要的概念是预加锁,在事务结束时,检测预加锁是否冲突。 10.0增加了三个控制参数,可以控制预加锁的上限。避免内存过度使用。 1. 控制每个事务的对象预加锁数量。 max_pred_locks_per_transaction (integer) The sha...