PostgreSQL 末尾数据块损坏(如pg_type pg_attribute) case
背景 某些用户遇到的一些问题,报读数据块错误。 ERROR: colud not read block 15 in file "base/16386/12741": read only 0 of 8192 bytes 大概的意识是,第15个数据块,没有正确的读出数据,数据为0字节。 第一反应是数据块坏...
背景 某些用户遇到的一些问题,报读数据块错误。 ERROR: colud not read block 15 in file "base/16386/12741": read only 0 of 8192 bytes 大概的意识是,第15个数据块,没有正确的读出数据,数据为0字节。 第一反应是数据块坏...
背景 pg_catalog这个schema是PostgreSQL默认的元数据schema,所有的元数据都在这里. 另一方面,pg_catalog这个schema默认就在搜索路径search_path里面,并且是删除不掉的,而且它的优先级排在所有schema的前面。 比如有两个重名的pg_class分别在这两个...
背景 https://github.com/CartoDB/cartodb/ What is CARTO? CARTO is an open, powerful, and intuitive platform for discovering and predicting the key insights un...
背景 数据库中,自增序列是常见的需求,例如计数,主键,唯一值,或者自动生成的流水号等等。
背景 数据库的原子操作单位是事务,那么在一个事务中的SQL,正常情况下,应该是这样的:要么全部提交,要么全部回滚。 为了保证持久性,数据库还有一个概念,事务日志,每当事务提交时,都需要确保REDO持久化(REDO的写IO会比较多,IO延迟直接关系到tps吞吐量,特别是小事务)。 因此,有些业务,为了提高整体的...
背景 首先A表和B表需要有关联的列, 关联之后A表和B表应该是多对一或者一对一的关系, 一对一的话,很好理解。 如果是一对多会怎么样呢? 任何数据库都会给你一个不确定的答案(与执行计划数据的扫描方法有关) 测试如下 : sar=> create table a (id int primary key,...
背景 pg_hba.conf文件是用于控制客户端访问PostgreSQL数据库的防火墙配置(ACL),以往我们要了解数据库配置的ACL,必须打开这个文件进行查看。 例如 cat $PGDATA/pg_hba.conf # PostgreSQL Client Authentication Config...
背景 PostgreSQL 9.6引入多核并行,一条SQL可以使用多个CPU核,提升SQL性能。 但是多核并行一定不要滥用,因为CPU资源有限,如果单个QUERY把CPU都用光了,其他QUERY就会因为缺乏CPU资源造成性能抖动。 9.6刚出来的时候,可以控制单个gather的并行度,比如全表扫描,扫描节点算...
背景 PostgreSQL很多年前就开始支持同步流复制,支持配置多个standby,当sync node异常时,potention standby节点会自动变成sync node。从而提供0丢失的高可用。 但是此前如果要配置超过2个副本的高可用时,需要打一个patch。 10.0将这个patch合并到了内核中...
背景 hash index是PostgreSQL中一个非常老的索引访问方法,也是非常经典的索引。 hash index中存储的是索引字段的hash value,而不是原始值,btree索引中存储的是原始值。 因此,当字段非常大时,btree索引可能无法使用。 例如 postgres=# create ta...