PostgreSQL DBA(178) - Serializability Isolation(禁止的异象)
PostgreSQL 9.1或以上版本,提供了真正意义的Serializability Isolation,本节主要介绍了在此隔离级别下禁止的异象。 测试数据数据表idx,在id列上有索引,数据库默认的隔离级别为可串行化 15:44:16 [local:/data/run/pg12]:5120 pg12@testdb=# \d+ idx
PostgreSQL DBA(177) - Serializability Isolation(Index vs NonIndex)
PostgreSQL 9.1或以上版本,提供了真正意义的Serializability Isolation,本节主要介绍了Serializability Isolation下有索引与没有索引的区别。
PostgreSQL DBA(176) - Serializability Isolation(基本概念)
PostgreSQL 9.1或以上版本,提供了真正意义的Serializability Isolation,本节主要介绍了Serializability的相关概念,包括Serializability、写偏序(Write Skew)等。 What is Serializability Isolation?ANSI SQL 1999对Serializability的定义是: The execu
PostgreSQL DBA(175) - Cost EST(SeqScan)
本节简单介绍了顺序扫描的成本估算。
VirtualBox安装
简单记录一下VirtualBox的安装过程,出现的问题以及解决方案.
PostgreSQL DBA(174) - PG 13(Allow inserts to trigger autovacuum)
在PG 13中,在插入数据时可自动触发autovacumm,从而可以生成表的vm文件而无需手工触发vacumm才能生成.vm文件可以加快VACUUM清理的速度. 新增的配置选项autovacuum_vacuum_insert_threshold控制插入数据触发autovacuum的的阈值,默认值为1000 [local:/data/run/pg13]:5130 pg13@masterdb=#
PostgreSQL DBA(173) - pgAdmin(Network latency)
不同的网络环境(延时)对数据库的性能指标有很大的影响,下面用tc工具来模拟增加网络延时来观察数据库的性能指标变化.
数据库实现原理#6(共享内存)
共享内存是进程间通讯的一种方式,PostgreSQL使用共享内存缓存数据以及各种数据结构. 下面是演示代码,逻辑很简单,自行参考代码注释.
数据库实现原理#5(FSM:最大堆二叉树)
PostgreSQL的FSM文件,其数据结构基础是最大堆二叉树,构建/删除/插入的相关代码详见代码注释.
PostgreSQL DBA(172) - PG 13(WAL activity in EXPLAIN)
在PG 13中,explain命令增加了WAL选项,可查看命令执行过程中产生的WAL日志大小,对于写敏感的应用来说,可通过该命令观察WAL日志的统计信息.
数据库实现原理#4(Hash Join)
Hash连接,如内存足够,首先遍历内表创建Hash表,然后遍历外表,对连接键计算HashCode,如一致,则遍历Hash表中具有同一HashCode的链表,值一致,则返回该值。 如内存不够,可遍历两张表,使用同样的Hash函数把表拆分为N个Hash“分区”,遍历内表每一个Hash分区和外表相应的Hash分区,如找到与连接键值一致的数据,则返回该值。
PostgreSQL DBA(171) - PG 13(pg_stat_statements to track planning statistics)
在PG 13的pg_stat_statements中新增了计划相关的时间. PG 12 [local:/data/run/pg12]:5120 pg12@testdb=# select * from pg_stat_statements where query like 'select count(*) from tmp%'; -[ RECORD 1 ]-------+-----------
PostgreSQL DBA(170) - pgAdmin(Queries For Index Maintenance)
本节简单介绍了PostgreSQL中用于索引维护的一些查询.
数据库实现原理#3(Merge Join)
归并连接的思想与归并排序的思想类似,详见代码注释.
数据库实现原理#2(获取第N个值)
获取数组中的第N个值,仍使用代码说明,算法参考快速排序的思想,详见代码注释. #include #include #include #include "../pub/pub.h" //tmparr : 待处理的数组 //counter : 数组元素个数 //n : 从小到大排列
数据库实现原理#1(Nested Loop Join)
下面使用代码的方式说明,较为简单,请自行阅读.
PostgreSQL 源码解读(249)- 实现简单的钩子函数
本节简单介绍了如何实现钩子函数.
PostgreSQL 递归查询
这篇文章对递归SQL的抽象和解释比较到位,摘录如下,有兴趣可参考原文. A general format of a recursive query is as follows: WITH RECURSIVE t AS ( non-recursive term (1) UNION ALL recursive term (2) ) SELECT
PostgreSQL DBA(169) - Develop(Distinct vs Group by)
本节简单介绍了PostgreSQL中和distinct和group by. 通常来说,获取唯一值,既可以用distinct也可以用group by,但在存在主键时,group by会做相应的优化,把多个分组键规约为主键.
PostgreSQL 源码解读(248)- HTAB动态扩展图解#2
本节简单介绍了PostgreSQL中的HTAB如何动态扩展,这是第2部分,结合代码进行解析.