PostgreSQL TID及tuple slot
本文介绍PG的TID和tuple slot知识
PG11新特性解读:新增非空默认值字段不需要重写表
1、如何理解这个特性在postgresql11之前,为表增加一个包含非空默认值的字段,将会导致表重写,为每一行添加该字段,并填充默认值。如果该表在增加字段前非常大,那么将会非常耗时。而在11版本中,新增加一个功能,将不再重写表。而是将非空默认值的属性添加到系统表pg_attribute中,该表描述每一列的信息。 1)系统表pg_attribute存储所有列信息postgres=# \d
360°全方位比较PostgreSQL和MySQL
360°全方位比较PostgreSQL和MySQL一、原文https://www.enterprisedb.com/blog/postgresql-vs-mysql-360-degree-comparison二、摘要本文对MySQL和PostgreSQL进行详细的比较,方便选择。1、为什么使用PostgreSQL2、为什么使用MySQL3、易用性4、语法5、数据类型6、复制与集群7、视图8、触发器
图解PostgreSQL--buffer的分配
一、数据结构1、Buffer由数组BufferDescriptor[]数组进行管理。该数组由函数InitBufferPool创建,大小为NBuffers个成员即BufferDesc。该数组创建后由StrategyControl进行管理,firstFreeBuffer为链表头,指向链表第一个成员;lastFreeBuffer指向链表尾;所有free list中成员由freeNext串起来,该值为数组
RDMA网络下重思数据库高可用
RDMA网络下重思数据库高可用摘要高可用数据库系统常常使用用数据复制来达到容错的目的。Active-passive和active-active复制算法都是严重依赖于时延,网络常常成为性能的主要瓶颈。从某种意义上说,这些技术旨在最小化副本之间的网络通信。然而,下一代网络的出现,以期高吞吐低延迟的特性,使得需要重视这些假设。首先提出,现代RDMA网络使得瓶颈转向CPU,因此现代网络优化的复制技术不再是
NVM作为主存上对数据库管理系统的影响
NVM作为主存上对数据库管理系统的影响implications of non-volatile memory as primary storage for database management systems摘要传统的数据库管理系统使用磁盘存储关系型数据。硬盘的特点:廉价、持久性、大容量。然而,从磁盘进行读取数据代价非常高。为了消除这个延迟,需要DRAM作为中间媒介。DRAM的特点:比磁盘速度快
Oracle转换Postgres
Oracle转换Postgres1、前提首先需要对Oracle和PostgreSQL的SQL都比较熟悉。对其理解的越详细就越具有优势,本文帮助读者迅速理解这两类SQL的区别是什么。如果因ACS/pg而需要将Oracle移植到PG,那么就需要熟悉AOLserver Tcl,尤其是SOLserver的API。本文,主要讨论:Oracle 10g到11g(大多数可以适用到8i)Oracle 12c某些方
XLOG段文件跳号现象分析
一、原理当执行promote时,我们经常看到的结果是:生成一个新XLOG文件,名称为:时间线加1,段文件名为之前的段文件号。那么做这个动作的时机是什么时候呢?是否只有这一种现象,会不会有其他现象?先透露下,当执行promote动作前,最后一个XLOG日志是SWITCH时,段文件号会加1。下面我们对其流程做详细分析,并通过gdb理解其原理。 做这个动作的
PostgreSQL扫描方法综述
PostgreSQL扫描方法综述 关系型数据库都需要产生一个最佳的执行计划从而在查询时耗费的时间和资源最少。通常情况下,所有的数据库都会产生一个以树形式的执行计划:计划树的叶子节点被称为表扫描节点。查询节点对应于从基表获取数据。例如,这一个查询:SELECT *FROM TAB1,TAB2 where TAB2.ID>1000。假设计划树如下: 上
PostgreSQL WAL解析:构建WAL记录准备
以heap_insert为例,简述WAL的插入过程。在构建WAL日志记录的过程中主要涉及2个数据变量:static XLogRecData rdatas数组和static registered_buffer registered_buffers数组。这两个数组分别用来保存WAL数据和管理rdatas链表。主要涉及3个重要的函数:XLogRegisterData、XLogRegisterBuffer
应用PMDK修改WAL操作使之适配持久化内存
应用PMDK修改WAL操作使之适配持久化内存这几个补丁能够通过使用PMDK对存储在持久化内存PMEM上的WAL日志进行读写。PMEM是下一代存储介质,具有一系列特性:快速、字节寻址、非易失。Pgbench是PG的通用benchmark,使用benchmark进行测试,这些补丁修改后的PG比原生PG性能提升5%。使用我们的insert benchmark,能够比原生PG快90%。下面进行详细描述。这
Postgres-XL 10R1 release版本发布
2018年10月25日2ndQuadrant发布了Postgres-XL 10R1版本。Postgres-XL是一个大规模并行数据库,它基于PG社区版本开发,并和PG高度兼容,支持Business Intelligence负载和读写大事务负载。 PG-XL完全开源。随着我们开始
An Overview of PostgreSQL & MySQL Cross Replication
本博客的目的在于简述MySQL和PostgreSQL之间如何跨数据库进行复制。涉及跨数据库复制的databases一般被称作异构databases。这是将数据从一种RDBMS server复制到另一种server的一种很好的方法。
技术前刊:PostgreSQL12 COPY和bulkloading提升
业务是否依赖COPY命令加载数据?PostgreSQL12提供了一个新特性,大大加快了加载速度。
How to Optimize PostgreSQL Logical Replication
逻辑复制(Logical Replication)或Pglogical是表级别的复制。两者都是基于WAL的复制机制,允许在两个实例之间复制指定表的WAL。这两个看起来让人迷惑,到底有什么区别呢?
PostgreSQL的MVCC vs InnoDB的MVCC
任何一个数据库最主要功能之一是可扩展。如果不删除彼此,则尽可能较少锁竞争从而达到这个目的。由于read、write、update、delete是数据库中最主要且频繁进行的操作,所以并发执行这些操作时不被阻塞则显得非常重要。为了达到这种目的,大部分数据库使用多版本并发控制(Multi-Version Concurrency Control)这种并发模型。这种模型能够将竞争减少到最低限度。
PostgreSQL的B-tree索引
B-tree索引适合用于存储排序的数据。对于这种数据类型需要定义大于、大于等于、小于、小于等于操作符。通常情况下,B-tree的索引记录存储在数据页中。叶子页中的记录包含索引数据(keys)以及指向heap tuple记录(即表的行记录TIDs)的指针。内部页中的记录包含指向索引子页的指针和子页中最小值。
Introducing PMDK into PostgreSQL
NVME在PostgreSQL上的探索
PostgreSQL pg_rewind实例--could not find previous WAL record at %X/%X
这里pg_rewind执行时,判断不出来没有分叉的情景,即本文的场景。此时执行pg_rewind会报错,让用户还以为WAL文件由损坏导致执行pg_rewind失败。这个工具如果能够将这种场景识别出来,报不需要rewind是不是更好?
PostgreSQL统计信息的几个重要视图
简单介绍几个关于PG统计信息的几个视图,用于调优