PostgreSQL 源码解读(250)- PG 14(Improving connection scalability)#2
PostgreSQL 14在MVCC上面有所增强,以保证在大批量客户端连接场景下性能不会出现显著下降(详细可参见参考资料中的链接)。本节介绍了提交记录“Don't compute global horizons while building snapshots.”中heapam_handler.c中的修改以及涉及的相关数据结构。
PostgreSQL 源码解读(249)- PG 14(Improving connection scalability)#1
PostgreSQL 14在MVCC上面有所增强,以保证在大批量客户端连接场景下性能不会出现显著下降(详细可参见参考资料中的链接)。本节介绍了提交记录“Don't compute global horizons while building snapshots.”中heapam.c中的修改以及涉及的相关数据结构。
PostgreSQL 并发控制机制(4):RR隔离级别,MySQL vs PostgreSQL
并发控制是多个事务在并发运行时,数据库保证事务一致性(Consistency)和隔离性(Isolation)的一种机制。主流商用关系数据库使用的并发控制技术主要有三种:严格两阶段封锁(S2PL)、多版本并发控制(MVCC)和乐观并发控制(OCC)。 本文是PostgreSQL并发控制的第4篇,介绍了在RR(Repeatable Read,可重复读)隔离级别下MySQL和PostgreSQL的异同。
PostgreSQL 并发控制机制(3):基于时间戳的并发控制
本文介绍了基于时间戳的并发控制,包括常规基于时间戳的并发控制、多版本基于时间戳锁的并发控制、与时间戳相关的Google Percolator工程实践和openGauss对PostgreSQL SI的优化改进等。
PostgreSQL 并发控制机制(2):表级锁和行级锁
在工程实践上,PostgreSQL使用了MVCC的一种变体快照隔离SI结合封锁技术进行并发控制,本文介绍了锁相关的部分理论以及PostgreSQL的工程实践,最后结合案例对PostgreSQL的表级锁和行级锁进行了相关介绍。
PostgreSQL 并发控制机制(1):隔离级别
并发控制是多个事务在并发运行时,数据库保证事务一致性(Consistency)和隔离性(Isolation)的一种机制。主流商用关系数据库使用的并发控制技术主要有两种:严格两阶段封锁(S2PL)和多版本并发控制(MVCC)。 PostgreSQL使用了多版本并发控制技术的一种变体:快照隔离Sanpshot Isolation(简称SI)。通过SI,PostgreSQL提供了与ANSI SQL标准相应的四个隔离级别,但实现与标准定义有一些差异。
快照隔离的理论学习
本节简单介绍了快照隔离的理论框架。
并发相关的现象和异常(Phenomena AND Anomalies)
本节简单介绍了与并发相关的现象(Phenomenon)和异常(Anomalies)。
数据库隔离级别
本节主要介绍了ANSI SQL隔离级别的定义、不足以及其他隔离级别如Cursor Stability、SI等。
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分区,如找到与连接键值一致的数据,则返回该值。