Recent Posts

从redo日志分析数据库的profile

1 minute read

背景 在PostgreSQL中查看TOP SQL是比较方便的,如下: 《PostgreSQL 如何查找TOP SQL (例如IO消耗最高的SQL)》 而从另一个角度,比如REDO文件,我们也能分析出每个时间段数据库的操作类型,分析数据库资源消耗,以及提出优化建议。 redo日志长什么样 pg_xlogdum...

PostgreSQL全角、半角互相转换

1 minute read

背景 转载原文 http://blog.qdac.cc/?p=1289 我们知道,客户许多时候录入数据时,并不注意输入法是否是全角模式,然后就造成输入的内容,有的是全角有的是半角,造成我们做分析统计时的不便,为此,编写相应的函数。当然这个过程应尽量在前台完成,但如果针对已经存在的数据,下面提供的两个函数就比较方...

如何优雅的修改被视图引用的表字段

2 minute read

背景 在修改数据库表字段的长度时,数据库提供了alter table的语法进行修改。 但是被修改的字段如果有其他引用(例如视图)时,必须先将引用的对象删除,再修改对应的字段。 例子如下 测试表 postgres=# create table test_t (id int, info text, crt_...

阿里云RDS for PostgreSQL varbitx插件与实时画像应用场景介绍

3 minute read

背景 PostgreSQL 内置的varbit, bit类型的操作函数比较简单,阿里云RDS for PostgreSQL对其进行了扩展。 支持更多的bit操作,可以覆盖更广的应用场景,例如实时用户画像推荐系统、门禁广告系统、购票系统等。 阿里云 varbitx 插件介绍 增加的函数接口如下 1. bit_...

PostgreSQL 模糊查询最佳实践 - (含单字、双字、多字模糊查询方法)

11 minute read

背景 前模糊(有前缀的模糊),后模糊(有后缀的模糊),前后模糊(无前后缀的模糊),正则匹配都属于文本搜索领域常见的需求。 PostgreSQL拥有很强的文本搜索能力,除了支持全文检索,还支持模糊查询、正则查询。内置的pg_trgm插件是一般数据库没有的,可能很多人没有听说过。同时还内置了表达式索引、GIN索引的...

PostgreSQL 中生成随机汉字

1 minute read

背景 汉字unicode编码范围 php中utf-8编码下用正则表达式匹配汉字的最终正确表达式 —— /[\x{4e00}-\x{9fa5}]/u \u4e00-\u9fa5 (中文) \x3130-\x318F (韩文) \xAC00-\xD7A3 (韩文) \u0800-\u4e00...

PostgreSQL 如何查找TOP SQL (例如IO消耗最高的SQL) (包含SQL优化内容) - 珍藏级

11 minute read

背景 数据库是较大型的应用,对于繁忙的数据库,需要消耗大量的内存、CPU、IO、网络资源。 SQL优化是数据库优化的手段之一,优化什么SQL效果最佳呢?首先要了解最耗费资源的SQL,即TOP SQL。 从哪里可以了解数据库的资源都被哪些SQL消耗掉了呢? 资源分为多个维度,CPU,内存,IO等。如何能了解各...

PostgreSQL 如何实现批量更新、删除、插入

3 minute read

背景 如何一次插入多条记录? 如何一次更新多条记录? 如何一次批量删除多条记录? 批量操作可以减少数据库与应用程序的交互次数,提高数据处理的吞吐量。 批量插入 批量插入1 使用insert into … select的方法 postgres=# insert into tbl1 (id, info ,...

PostgreSQL upsert功能(insert on conflict do)的用法

6 minute read

背景 PostgreSQL 9.5 引入了一项新功能,UPSERT(insert on conflict do),当插入遇到约束错误时,直接返回,或者改为执行UPDATE。 语法如下 Command: INSERT Description: create new rows in a table ...