分享更有价值
被信任是一种快乐

PostgreSQL如何获取事务号XID

文章页正文上

这篇文章主要为大家展示了“PostgreSQL如何获取事务号XID”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“PostgreSQL如何获取事务号XID”这篇文章吧。主要解析了函数AssignTransactionId->GetNewTransactionId的实现逻辑。在GetNewTransactionId函数中,检查是否可以安全的分配XID.
这可以防止由于XID wraparound而导致的灾难性数据丢失.
基本规则是:
如果超过了xidVacLimit,开始尝试强制autovacuum循环.
如果超过了xidWarnLimit,开始发出警告.
如果超过了xidStopLimit,拒绝执行事务,直至以单用户模式运行.
(这为DBA提供了一个逃生通道,使他们能够通过数据库早期的安全性检测,进入数据库进行维护)ShmemVariableCache->xidVacLimit —> 200,000,561 —> 大于等于该值,触发自动vacuum
ShmemVariableCache->xidWarnLimit —> 2,136,484,208 —> 大于等于该值,系统报警
ShmemVariableCache->xidStopLimit —> 2,146,484,208 —> 大于等于该值,系统不允许执行事务,使用单用户模式处理Transaction免费主机域名State
事务状态结构体ShmemVariableCache
VariableCache是共享内存中的一种数据结构,用于跟踪OID和XID分配状态。
ShmemVariableCache—>共享内存中的指针AssignTransactionId函数,给定的TransactionState分配一个新的持久化事务号XID,在此函数调用前,不会为事务分配XIDs.GetNewTransactionId是获取事务ID实际执行的地方,该函数从共享内存变量ShmemVariableCache中获取nextXid,+1后作为新的XID.执行txid_current,触发函数调用启动gdb,设置断点查看调用栈获取XidGenLock锁获取共享内存变量ShmemVariableCache->nextXid —> 2409扩展clogShmemVariableCache->nextXid++ —> 2410获取进程和事务信息释放锁XidGenLo免费主机域名ck返回xid(2409),完成调用.以上是“PostgreSQL如何获取事务号XID”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注云技术行业资讯频道!

相关推荐: 怎么安装PostgreSQL的插件pg_catcheck

这篇文章主要讲解了“怎么安装PostgreSQL的插件pg_catcheck”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么安装PostgreSQL的插件pg_catcheck”吧!安装编译安装体验执行显示0…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册