自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号九:shmem中初始化Predicate锁

这一节pg初始化predicate锁,支持可序列化事务隔离。通过InitPredicateLocks例程实现,主要是干了下面这么几件事:         A创建了哈希表"PREDICATELOCKTARGET hash"。         B在上面的哈希表里增加了ScratchTargetTag结构的索引         C创建了哈希表"PREDICATELOCK hash"。

2012-02-29 21:20:38 2075

原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号八:shmem中初始化常规锁管理器

这一节pg初始化锁管理器,通过InitLocks例程实现,主要是创建了三个哈希表。第一个哈希表"LOCKhash"用于管理锁,第二个哈希表"PROCLOCKhash"用于管理进程锁,第三个"LOCALLOCKhash"用于管理本地锁信息。其中第一个和第二个哈希表都是共享哈希表,第三个是非关系哈希表。初始化第三个哈希表"LOCALLOCK hash"时在共享内存哈希表索引"ShmemIndex"里没

2012-02-27 20:52:16 3618 2

原创 PostgreSQL的内存管理机制十二:共享内存/shmem分配

pg的内存除了AllocSet/MemoryContext外,另一个主要部分就是共享内存(shared memory)。这一节讨论共享内存(简写shmem)的分配。         pg在reset_shared()这个函数里,计算数据缓冲、xlog、clog、共享进程、子事务、并发控制、轻量级锁、backend进程等需要的共享内存,调用shmget()函数在堆上分配,用PGShmemHeade

2012-02-23 21:46:48 6027

原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号七:shmem中初始化bufferpool

pg初始化完shmem,给其加上索引"ShmemIndex"后,接着就在shmem里初始化管理各种事务和事务本身相关结构的实例。然后就是初始化缓冲池(buffer pool)。        缓冲区(buffers)存在于一个空闲内存块列表和一个哈希表查询数据结构。下面简述一下和缓冲池相关的概念。        查找缓冲区(buffer)时必须注意,在I/O开始之前缓冲区必须可用。负责尝试读缓

2012-02-15 20:23:16 1467

原创 PostgreSQL启动过程中的那些事七:初始化共享内存和信号六:shmem中初始化twophase

pg初始化shmem,给其加上索引"ShmemIndex"后,接着就在shmem里初始化xlog。然后依次初始化clog、subtrans、twophase、multixact。安排按clog、subtrans、multixact、twophase的顺序写,把twophase放到multixact之后是因为前面三个用了相同的算法和数据结构,连起来写可以加深印象和归类记忆。这一篇讨论twophase

2012-02-12 19:31:01 1645

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除