9 yzs87

尚未进行身份认证

我要认证

专注于PostgreSQL、MySQL、GreenPlum及其生态

等级
TA的排名 8k+

列存zedstore

邮件列表1、动机与目标1)列子集查询性能提升(减小IO)2)相对于heap表,减小磁盘占用空间。Tuple头更小,利用压缩数据3)表数据可以列式存储形式独立于表数据4)完全符合MVCC5...

2020-06-27 20:51:10

PostgreSQL文件扩展机制

扩展的底层函数为mdextend。先通过_mdfd_getseg获取指定页号的段文件描述符,然后根据页号计算出偏移,向该偏移出写入一页:大部分情况写入一页0来进行扩展。 ...

2020-06-10 22:57:49

同步复制注意点

同步复制情况下,先刷写日志,然后记录clog并持久化,最后才等待备机接收日志后返回的ACK,如果备机有问题的话或复制链路异常,日志传输失败,此时用户客户端的commit会挂...

2020-06-07 18:22:44

PostgreSQL异常重启postmaster.pid处理

本文介绍启动时pid文件即锁文件的处理。若异常宕机,导致pid文件残留,那么重启时会自动将这个文件删除吗?main>PostmasterMain->CreateDataDir...

2020-06-05 22:32:21

PMDK vs mmap/memcpy

PMDK进行创建文件时调用函数pmem_map_file,而这个函数底层调用mmap,那么这个PMDK和操作系统函数调用有何不同呢?内容Libpmem的pmem_map_file()支持2M/1G(大页大小)对齐方式,这样能够减少页故障频率。另外,pmem_memcpy_nodrain()通过单指令、多数据指令(SIMD)、NT存储指令(MOVNT)拷贝数据。这样的话,通过libpmem的API函数比mmap()、memcpy()快。Linux4.5及更高版本支持MAP_SYNC和MAP...

2020-05-29 21:04:58

非易失性内存技术及数据库

非易失性内存技术及数据库内容“2013年开始这个项目的研究,当时不确定非易失性内存技术是否可商用。2019年Intel商用了NVM产品,NVM对下一代数据库系统的影响吸引了广大研究者”--Joy Arulraj和Andrew Pavlo。采访了《非易失性内存数据库管理系统》的作者:Joy Arulraj和Andrew Pavlo。谈论了非易失性内存NVM技术及NVM对下一代数据库系统的影响。Q1:非易失性内存技术是什么?Arulraj,Pavlo:他是一种广泛的技术,包括相变内存和...

2020-05-17 18:56:44

WAL文件回收

checkpoint执行大致分为四步:1)刷写脏页,即将整个share buffer的所有脏页都刷盘;2)生成checkpoint wal记录,并插入WAL BUFFER;3)将checkpoint前的所有wal全部刷盘;4)回收WAL文件。这里主要介绍回收文件时需要注意的一点。尤其是磁盘空间比较紧张的场景下。 本文介绍WAL文件回收时,需要注意的一个点。回收由函数Rem...

2020-04-25 19:35:19

非易失性数据库系统存储与恢复方法

非易失性数据库系统存储与恢复方法摘要非易失性内存的出现从根本上改变了数据库管理系统的内存和持久存储的架构。这些新型NVM设备具有堪比DRAM的速度,但是写到NVM设备后这些数据就具备了持久性。因为现现有的数据库管理系统基于内存是易失的这样的条件下,所以并不能充分利用这项技术。通过NVM,传统数据库管理系统的很多部件都将变得不再必要,并且会降低数据库的性能。为了更好的理解这些问题,基于不...

2020-04-25 16:47:04

持久内存编程

持久内存编程2013年6月我写了关于非易失性内存(NVM)的未来接口。其中描述了SNIA NVM Programming technical work group(TWG)正在开发的NVM编程模型。在过去的四年里,规范已经发布,正如预测的那样,编程模型已成为大量后续工作的重点。该编程模型,在规范中描述为NVM.PM.FILE,可以将PM当做文件被操作系统映射到内存。本文,介绍持久内存编程模型如...

2020-04-05 15:43:26

PostgreSQL VACUUM可见性

分两种情况,一是XMIN事务未提交,一个是xmin事务已提交。针对xmin未提交的事务,即当前的tuple刚insert还未提交:1)元组不合法,即坏元组时,返回HEAPTUPLE_DEAD2)该tuple是当前事务产生的:此时这个记录在这个事务未删除或只是被锁住或进行了delete但是delete abort了,那返回HAPTUPLE_INSERT_IN_PROGRESS;若则记...

2020-03-27 22:43:05

资讯-Aerospike 4.8进一步支持持久内存

2020-03-21 19:21:18

资讯--Aerospike 4.5支持持久内存

Aerospike 4.5:PM和压缩正文Aerospike企业版4.5是第一个商用的支持Intel® Optane™ DC持久内存(基于Intel的3DXPoint)的数据库。Aerospike open database架构意思是:原生支持各种企业应用环境,支持Java, .NET, Node.js, Python, Go等编程语言。和简单将PM映射到内存以存储内存数据结构不同,A...

2020-03-20 22:06:11

PostgreSQL MVCC可见性判断

1、知识准备1)Tuple格式头HeapTupleHeaderDatatypedef struct HeapTupleFields{ TransactionId t_xmin; /* inserting xact ID */ TransactionId t_xmax; /* deleting or locking xact ID */ union{ ...

2020-03-12 21:40:42

PostgreSQL 13:索引并行vacuum

原文https://blog.dbi-services.com/postgresql-13-parallel-vacuum-for-indexes/正文PostgreSQL的MVCC机制...

2020-03-06 21:21:30

PostgreSQL DDL操作解析

本文介绍PG DDL操作上层接口。1、DDL操作的入口函数是ExecModifyTable,insert、delete、update都会进入这个函数,如果为insert,执行ExecPr...

2020-02-25 19:25:44

PostgreSQL的insert解析

其insert由函数heapam_tuple_insert完成。1、首先需要从slot中取出tuple值,HeapTupleTableSlot.tuple2、从relation中得到该记录即将插入表的OID:relation->rd_id,然后slot->tts_tableOid和tuple->t_tableOid更新为该OID3、调用heap_insert将tu...

2020-02-24 22:11:39

PostgreSQL如何在页面内找一个free slot

本文介绍向业内插入一条记录时,如何找一个空闲的空间进行插入。PageAddItemExtended1、计算出pd_linp数组的最大值后新增一个后的个数:limit=[pg_lower-...

2020-02-24 20:53:52

PostgreSQL通过索引获取heap tuple解析

本文介绍通过索引扫描获取heap tuple的TID后,如何通过TID获取heap tuple。一、先介绍两个数据结构关系二、接着介绍获取记录流程1、通过索引扫描后,得到索引记录(key...

2020-02-23 21:23:31

PostgreSQL表扫描方法解析

本文介绍PG的表扫描方法原理。全表扫描函数在heap handler API接口函数为heap_getnextslot函数。该函数从磁盘读取数据页到内存并遍历页内记录,将其存储到slot中返回用户。这个函数一次只获取一个记录,倒到上次ExecutePlan函数中循环调用ExecProcNode再次进入该函数获取下一个记录,依次类推,直到获得所有记录。...

2020-02-21 20:55:17

表扫描描述符及扫描方向

1、表扫描函数的参数传递通过TableScanDescData,函数内层将扫描到的记录存储到HeapScanDesc.rs_ctup中,然后将该成员内容传递给slot中。2、内部处理时会...

2020-02-21 11:53:32

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 签到王者
    签到王者
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 推荐红人
    推荐红人
    发布高质量Blink获得高赞和评论,进入推荐栏目即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 博客之星-入围
    博客之星-入围
    授予每年博客之星评选结果第21-200名的用户
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。