Greenplum数据库分布式事务系统——Distributed Log

网友投稿 623 2022-11-13

Greenplum数据库分布式事务系统——Distributed Log

Greenplum数据库分布式事务系统——Distributed Log

共享内存初始化

DistributedLog_shmemInit函数主要工作:1. 为distributed log建立SLRU 2. 为distributed log 创建共享内存。

为distributed log建立SLRU在内存中定义的结构体DistributedLogCtlData用于指向共享内存数据结构体,先初始化PagePrecedes函数指针为用于判别哪个数据页更老的函数。调用SimpleLruInit函数初始化LRU共享内存池(共享内存大小为BUFFERALIGN(sizeof(SlruSharedData)+nslots*(sizeof(char*)+sizeof(SlruPageStatus)+sizeof(bool)+sizeof(int)+sizeof(LWLockPadded)))+BLCKSZ*nslots),将申请的共享内存池指针赋值给SlruCtlData结构体的shared成员。将pg_distributedlog字符串拷贝到SlruCtlData结构体的DIR成员中。为distributed log创建共享内存,其实就是在共享内存中申请DistributedLogShmem结构体大小的内存,用于存放DistributedLogShmem的内容。系统安装时需要调用一次DistributedLog_BootStrap函数,用于创建初始DistributedLogsegment。Postmaster或standalen-backedn启动时调用一次DistributedLog_Startup函数。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:PostgreSQL数据库锁机制——常规锁
下一篇:Greenplum常用SQL——通过表名查询列名、类型、是否具有序列
相关文章

 发表评论

暂时没有评论,来抢沙发吧~