PostgreSQL 同名 index operator search_path优先级引入的一个问题 - 为啥突然不走索引了? - intarray示例
背景 操作符是数据库最常用的要素之一,一个SQL语句中总是会出现它的影子。 select * from tbl where id=1; 这里的=就是操作符。 实际上操作符的底层还是函数,操作符是函数的综合体。 1、PostgreSQL不仅仅允许用户自定义函数,也允许我们自定义操作符。具体见创建操...
背景 操作符是数据库最常用的要素之一,一个SQL语句中总是会出现它的影子。 select * from tbl where id=1; 这里的=就是操作符。 实际上操作符的底层还是函数,操作符是函数的综合体。 1、PostgreSQL不仅仅允许用户自定义函数,也允许我们自定义操作符。具体见创建操...
背景 通常客服系统可能存在一对多,多对多的情况。 例如, 我们在使用淘宝时,与店家交流时,你根本不知道后面的小二是一个人还是多个人共用一个账号,还有可能是多个人使用了多个账号但是对消费者只看到一个。 例如: 小二(n)账号 -> 统一对外账号 -> 消费者 还有的情况是一个小二为多个消费者服...
背景 将MySQL数据不落地的方式导入PostgreSQL。 1 rds_dbsync (推荐使用) 《MySQL准实时同步到PostgreSQL, Greenplum的方案之一 - rds_dbsync》 这个效率最高,支持不落地,支持流式导入,支持单表并发(通过配置文件,写WHERE条件,拆成多个并发导同...
背景 当数据库异常停库,再次启动时。又或者由于进程CRASH后自动重启时。需要进入恢复模式,恢复完成后,数据库才能正常交互。 在启动过程中,正在恢复时,如果此时连接数据库,会报错如下: the database system is starting up 用户只看这个信息,并不知道数据库还要启动多久,...
背景 内容推荐是蛮普遍的需求,例如论坛、电商、新闻客户端等。 比较简单的需求:编辑精选一些内容ID,生成推荐列表。(例如每天生成一个这样的推荐列表。)然后随机的推荐给用户(同时过滤已读的内容)。 更高级的推荐需求:应该是根据不同口味产生的,例如对会员本身进行画像,归类。服务端针对不同口味生成不同的推荐列表。定...
背景 早在十年前,PostgreSQL 8点几的版本就支持了递归查询,递归查询的应用非常的广泛,如下: 《PostgreSQL 递归妙用案例 - 分组数据去重与打散》 《PostgreSQL Oracle 兼容性之 - INDEX SKIP SCAN (递归查询变态优化) 非驱动列索引扫描优化》 《Post...
背景 空间数据有一定的规范,例如SRID的规范。空间类型geometry包罗万象,除了能存储POINT,还能存储多边形,线段等。 这就带来一个有意思的烦恼,当我们业务不够规范时,你可以往GEOMETRY里面存储任意SRID的数据,存储任意的空间对象。 1、SRID错乱,可能导致一些查询,索引问题。 2、本身...
背景 当一个表有很多索引时,并且一个QUERY可以使用到其中的多个索引时,数据库会如何做出选择?最终选择哪个,或者哪几个索引呢? 《PostgreSQL 多查询条件,多个索引的选择算法与问题诊断方法》 选择单个索引时,PATH可以选择index scan , index only scan, bitmap s...
背景 图像相比文字是更容易被理解的东西,在BI可视化领域,经常会使用图像来代替数值,展示一些信息,例如柱状图、饼图、线图等。 AWR文字报告里面,如果多几个图像来代替列表,其实也是不错的。 那么SQL能直接画图吗,把一行行的结果,转换成图像。 例如 1、TOP SQL的总耗时占比饼图。 2、数据库对象类...
背景 一个多渠道消息平台的数据库设计。 业务规则 1、消息发送给最终用户,一则消息可以发送给多个社交软件平台(因为一个用户可能使用多个软件平台(比如旺旺,WEB版旺旺,淘宝。。。))。 使用数组存储 社交软件平台 2、一条消息在某社交软件平台已读,则该消息在其他社交软件平台也需要为已读。因为同一条...