PostgreSQL 源码解读(144)- Buffer Manager#9(RelationGetBufferForTuple函数)
本节简单介绍了PostgreSQL在执行插入过程中与缓存相关的函数RelationGetBufferForTuple,该函数返回满足空闲空间 >= 给定大小的page,并且该page对应的buffer状态为pinned和并持有独占锁。
PostgreSQL 源码解读(143)- Buffer Manager#8(BufTableHashCode函数)
本节简单介绍了PostgreSQL缓存管理(Buffer Manager)中的实现函数ReadBuffer_common->BufferAlloc->BufTableHashCode,该函数根据BufferTag计算Hash Code。
PostgreSQL 源码解读(142)- Buffer Manager#7(hash_search_with_hash_value函数)
本节简单介绍了PostgreSQL缓存管理(Buffer Manager)中的实现函数ReadBuffer_common->BufferAlloc->BufTableInsert->hash_search_with_hash_value,该函数由BufTableInsert调用,对于给定的tag和buffer ID,插入到哈希表中。
道德标准的形成过程
摘录于劳伦斯.柯尔伯格在1963年发表的一篇论文,提出人的道德标准的形成要经历六个阶段。第一阶段,小孩子是以行为的后果作为是非的标准,判断一件事是对是错,取决于做了这件事之后是会被奖励还是被责打;第二阶段,自我中心开始形成,判断是非的依据就是单纯的个人好恶。这两个阶段被称为“前道德水平”;第三阶段,小孩子开始重视别人的态度和利益了,知道了能让别人高兴的事也是好事,尽管这件事情不一定对自己有利;第四
成功与心态
成功=心态x能力。咋一看,蛮有道理的,要想成功,心态得好要积极向上,能力得强可以实现自我。但,大凡鸡汤,大多经不起认真推敲。比如金钱如粪土,朋友值千金,单独看都没有问题,但合起来就成了朋友如粪土,显然有问题。回到这条成功公式上面,有几个问题,逐一说说:1、成功是什么?很多人对成功只是个概念,但成功是什么?恐怕很多人都没有想清楚。既然连这个标准都没有,自己想要什么都不知道,还谈什么心态和能力?2、成
系统慢慢变坏的逻辑
一个研发团队,本来产品交付的质量还挺好的,但怎么交付的产品质量逐渐就不行了呢?西方有个“破窗理论”,说如果一个房子的窗户被打破了,一定要马上补好,否则别人就会觉得这个房子没人管,就会主动破坏房子。下面我们分析一下“慢慢变坏”的逻辑。反馈机制在研发体系中,为了达到质量要求,都会有相应的交付标准和编码规范来约束研发人员,大家都按照交付标准、编码规范来做事情,一旦发现没有按照标准、规范来做事情,那么就有
PostgreSQL 源码解读(141)- Buffer Manager#6(Clock Sweep算法)
本节简单介绍了PostgreSQL缓存管理(Buffer Manager)中的Clock Sweep算法,其主要逻辑在StrategyGetBuffer函数中实现。 一、数据结构BufferDesc共享缓冲区的共享描述符(状态)数据 /* * Flags for buffer descriptors * buffer描述器标记 * * Note: TAG_VALID essen
PostgreSQL 源码解读(140)- Buffer Manager#5(BufTableInsert函数)
本节简单介绍了PostgreSQL缓存管理(Buffer Manager)中的实现函数ReadBuffer_common->BufferAlloc->BufTableInsert,该函数对于给定的tag和buffer ID,插入到哈希表中。
遵循惯例,但不能墨守成规
何为惯例?惯例是不需要明确说明,但大家又共同认同的做法或者规则。小至个人、团队,大至组织、民族、国家,都有惯例。比如不能随便大小便,这是惯例;比如坐火车,对号入座,这是惯例;比如某些民族,某些食物不能吃,这是惯例;比如国人过年喜欢红色调,这也是惯例。下面我们来谈谈惯例的价值以及惯例不好的地方。惯例的价值惯例可以约束组织中个人的行为。如果在一个老总办公室里面,贴着一个标语:请不要随地大小便,那是怎么
PostgreSQL 源码解读(139)- Buffer Manager#4(StrategyGetBuffer函数)
本节简单介绍了PostgreSQL缓存管理(Buffer Manager)中的实现函数ReadBuffer_common->BufferAlloc->StrategyGetBuffer,该函数在BufferAlloc()中,由bufmgr调用,用于获得下一个候选的buffer.。
PostgreSQL 源码解读(138)- Buffer Manager#3(BufferAlloc函数)
本节简单介绍了PostgreSQL缓存管理(Buffer Manager)中的实现函数ReadBuffer_common->BufferAlloc,该函数是ReadBuffer的子过程.处理共享缓存的搜索。
说服的重型武器:占据道德制高点
我们写论文,与人争论,说服别人,通常的套路摆事实、讲道理。这种套路最多算是常规武器,今天结合这几天的一些体会,介绍一种重型武器,那就是:占据道德制高点。
左派 VS 右派
一直以来没有彻底分清楚什么是左派,什么是右派,感觉这玩意离自己挺远的,不了解其实关系也不大。这几天听人解读了一本书:《正义之心:为什么人们总是坚持“我对你错”》,作者是乔纳森·海特,除了基本搞清楚了左派和右派的区别,也纠正了先前的偏见,其实左派和右派就在我们身边,只是我们不自知而已。左派 VS 右派什么是左派,什么是右派?简单来说就是,主张改变的站左边,主张不改变的站右边,这样就分成了左右两派。在
人,为什么难以改变?
俗话说,江山易改本性难移。人,为什么难以改变?我们先看几个例子。日常生活中的例子1、吸烟第一个例子是我们日常经常所见的吸烟。很多人明明知道吸烟有害健康,但很多人以意志力薄弱,抵抗不了烟瘾为由,就是戒不了。2、乘坐国营车,安全有保障我从泸沽湖坐车到丽江,一路上都有标示牌,提醒大家不要乘坐私下拼凑的营运客车,要乘坐客运站的大巴车。同时,在大巴上面播放了一段《今日说法》的录播。录播讲述的是某些乘客乘坐从
PostgreSQL 源码解读(137)- Buffer Manager#2(ReadBuffer_common函数)
本节简单介绍了PostgreSQL缓存管理(Buffer Manager)中的其中一个实现函数ReadBuffer_common,该函数是所有ReadBuffer相关的通用逻辑实现,返回Buffer。
PostgreSQL 源码解读(136)- Buffer Manager#1(ReadBufferExtended函数)
本节简单介绍了PostgreSQL缓存管理(Buffer Manager)中的其中一个实现函数ReadBufferExtended,该函数返回对应请求关系数据块的buffer.。
PostgreSQL 源码解读(135)- MVCC#19(vacuum过程-heap_execute_freeze_tuple函数)
本节简单介绍了PostgreSQL手工执行vacuum的处理流程,主要分析了ExecVacuum->vacuum->vacuum_rel->heap_vacuum_rel->lazy_scan_heap->heap_execute_freeze_tuple函数的实现逻辑,该函数执行实际的元组冻结操作(先前已完成准备工作)。
PostgreSQL DBA(27) - MVCC#7(避免长事务)
对于Update/Delete操作,PostgreSQL的MVCC机制仍会保留先前版本的数据,这些数据在VACUUM时将被清除.但如果在执行VACUUM时,存在先于VACUUM操作的活动事务,假定这些活动事务中最小的事务ID为OldestXmin,那么VACUUM不会清理删除事务ID(即xmax) > OldestXmin的元组,如果业务繁忙并且OldestXmin事务一直不提交,会导致存储空间一直膨胀,直至耗尽空间.
PostgreSQL 源码解读(134)- MVCC#18(vacuum过程-HeapTupleSatisfiesVacuum函数)
本节简单介绍了PostgreSQL手工执行vacuum的处理流程,主要分析了ExecVacuum->vacuum->vacuum_rel->heap_vacuum_rel->lazy_scan_heap->HeapTupleSatisfiesVacuum函数的实现逻辑,该函数判断一个元组是否可对所有正在运行中的事务可见。
闲话杂谈之境界
在进入正题前,我们先来聊聊电影。现在的电影,已从光影艺术演变为以娱乐大众为主的产业,在黑暗陌生的周边都是陌生人的环境里,让人可以随着电影的光影进入电影营造的虚幻世界中,暂时远离眼前的苟且,进入远方。从这个角度来看,《西虹市首富》不失为一部好电影,可以让人进入喜剧世界里,欢笑不停。但,走出电影院那一刻,如果你想细细回味其中细节,你会觉得刚才似乎喝了一杯白开水,索然无味,不是电影不好,而是脱离了幻境回