Recent Posts

PostgreSQL 创建库时如何指定 Collate, Ctype

1 minute read

背景 初始化集群,建库,建表,建索引,sort | compare QUERY时都可以指定COLLATE。 用法参考 https://www.postgresql.org/docs/9.5/static/sql-createtable.html https://www.postgresql.org/docs...

用Valgrind检测PostgreSQL内存泄露

2 minute read

背景 Valgrind简介 Valgrind是一个开源工具集合,其中最有名的是Memcheck可用来检测C,C++程序的内存泄露,判断程序运行是否会crash或者产生不可预知的结果。 Valgrind Memcheck工具的用法 以下内容参考自Valgrind的quick start manual htt...

page fault带来的性能问题

3 minute read

背景 Linux进程如何访问内存 Linux下,进程并不是直接访问物理内存,而是通过内存管理单元(MMU)来访问内存资源。 原因后面会讲到。 为什么需要虚拟内存地址空间 假设某个进程需要4MB的空间,内存假设是1MB的,如果进程直接使用物理地址,这个进程会因为内存不足跑不起来。 既然进程不是直接访问物理内存...

PostgreSQL 如何高效解决 按任意字段分词检索的问题 - case 1

5 minute read

背景 在有些应用场景中,可能会涉及多个字段的匹配。 例如这样的场景,一张表包含了几个字段,分别为歌手,曲目,专辑名称,作曲,歌词, 。。。 用户可能要在所有的字段中以分词的方式匹配刘德华,任意字段匹配即返回TRUE。 传统的做法是每个字段建立分词索引,然后挨个匹配。 这样就导致SQL写法很冗长,而且要使...

PostgreSQL Oracle 兼容性之 - 锁定执行计划(Outline system)

2 minute read

背景 绑定SQL执行计划,大家一定会想到SQL HINT,通过HINT告诉优化器你要用什么访问方法,用什么JOIN方法,JOIN的顺序,驱动表等等。 但是SQL HINT有一定的弊端,它需要修改应用程序中的SQL语句,把SQL加上HINT。 对pg_hint_plan感兴趣的同学,可以参考我写到文档 htt...

mongoDB BI 分析利器 - PostgreSQL FDW (MongoDB Connector for BI)

4 minute read

背景 mongoDB是近几年迅速崛起的一种文档型数据库,广泛应用于对事务无要求,但是要求较好的开发灵活性,扩展弹性的领域,。 随着企业对数据挖掘需求的增加,用户可能会对存储在mongo中的数据有挖掘需求,但是mongoDB的语法较为单一,不能满足挖掘的需求。 PostgreSQL是起源于伯克利大小的一个开源数...

如何加快PostgreSQL结巴分词pg_jieba加载速度

3 minute read

背景 PostgreSQL的全文检索接口是开放API的,所以中文分词的插件也非常多,例如常用的scws分词插件,还有结巴分词的插件。 但是你在使用结巴分词插件的时候,有没有遇到这样的问题。 每个会话,第一次查询会比较慢,接下来的查询就快了。 例如 psql (9.5.3) Type "help" fo...

PostgreSQL 使用递归SQL 找出数据库对象之间的依赖关系

5 minute read

背景 在数据库中对象与对象之间存在一定的依赖关系,例如继承表之间的依赖,视图与基表的依赖,主外键的依赖,序列的依赖等等。 在删除对象时,数据库也会先检测依赖,如果有依赖,会报错,需要使用cascade删除。 另外一方面,如果需要重建表,使用重命名的方式是有一定风险的,例如依赖关系没有迁移,仅仅迁移了表是不够的...

一致性哈希在分布式数据库中的应用探索

less than 1 minute read

背景 本文大部分内容参考自 http://blog.csdn.net/cywosp/article/details/23397179 在分布式数据库中,设计数据分布算法通常需要考虑到几点 平衡性(Balance) 平衡性是指哈希的结果能够尽可能分布到所有的分片节点中去,这样可以使得...

关键时刻HINT出彩 - PG优化器的参数优化、执行计划固化CASE

7 minute read

背景 有过数据库使用经验的童鞋可曾遇到过SQL执行计划不准确,或者SQL执行计划抖动的问题。 PostgreSQL的执行计划与大多数的企业数据库是一样的,都是基于成本优化。 基于成本优化的优化器,在算法靠谱,统计信息准确的前提下,通常得到的执行计划是比较准确的。 那么什么时候执行计划可能不准确呢? ...