PostgreSQL 多查询条件,多个索引的选择算法与问题诊断方法
背景 当一个SQL中涉及多个条件,并且多个条件有多种索引可选时,数据库优化器是如何选择使用哪个索引的? 例如 有一张表,有2个字段,单列一个索引,双列一个复合索引. 建表。 postgres=# create table tbl(id int, gid int); CREATE TABLE ...
背景 当一个SQL中涉及多个条件,并且多个条件有多种索引可选时,数据库优化器是如何选择使用哪个索引的? 例如 有一张表,有2个字段,单列一个索引,双列一个复合索引. 建表。 postgres=# create table tbl(id int, gid int); CREATE TABLE ...
背景 为了保护用户数据的可靠性,阿里云RDS PostgreSQL做了一些保护机制。 1、例如PostgreSQL 10版本以前, HASH索引是不写WAL日志的,所以如果你使用了hash index,当数据库崩溃后,HASH INDEX是dirty的,走HASH INDEX SCAN可能导致数据不一致。 又...
背景 数据库支持消息队列的功能,利用消息队列可以实现异步广播,结合流计算实现异常数据推送等。 Oracle中,通过dbms_aq这个包支持消息队列。在PPAS中,有对应的包,兼容Oracle。 在PostgreSQL中,使用listen, notify同样能够支持消息队列的功能。在对应的驱动中有相应的介绍。包...
背景 《PostgreSQL 11 preview - 支持 数组外键约束》 在PostgreSQL中,应用可以非常方便使用多值类型,比如数组、全文检索、范围类型等。 对于多值类型的操作也越来越方便,比如查询相交、包含可以使用索引,更新、替换、APPEND的操作也都有对应的UDF和OP来支撑。 可能应用会有...
背景 类微博系统,最频繁用到的功能: A,D,E用户关注B用户。 B用户推送消息。 A,D,E用户接收消息。 A,D,E用户消费消息。涉及消费排序算法。 之前写过一篇《三体高可用PCC大赛 - facebook\微博 like场景 - 数据库设计与性能压测》 LIKE相关...
背景 PostgreSQL 元宵节对各个版本发布了小版本补丁,主要是解决一个search_path的功能,被攻击者利用来设置陷阱的问题。 https://git.postgresql.org/gitweb/?p=postgresql.git&a=search&h=HEAD&st=comm...
背景 关系系统在很多设计类应用中非常常见,例如查询你有哪些好友,你是哪些人的好友。 又比如我LIKE了哪些人,哪些人LIKE了我。 比如在之前的”PCC大赛 - facebook\微博 like场景”,也是类似的场景。 《三体高可用PCC大赛 - facebook\微博 like场景 - 数据库设计与性能压...
背景 概率计算是流式计算中比较重要的基础,PostgreSQL生态中的pipelinedb提供了诸多概率计算的功能模块。 《[转]流数据库 概率计算概念 - PipelineDB-Probabilistic Data Structures & Algorithms》 由于pipelinedb还没有插件...