【速记】Postgresql中几个ResourceOwner的含义

几个ResourceOwner的含义
总结下几个resowner的含义:
- 事务结构内的resowner:
TransactionState→curTransactionOwner- 含义:跟随事务结构体创建,会申请内存,跟随事务结构释放。每层事务都有自己的
curTransactionOwner,各自申请内存,子事务提交会释放本层的curTransactionOwner。
- 含义:跟随事务结构体创建,会申请内存,跟随事务结构释放。每层事务都有自己的
CurrentResourceOwner- 含义:大部分函数默认使用的资源管理器,会直接在
CurrentResourceOwner上申请资源。例如buffer、文件fd、锁系统等等。
- 含义:大部分函数默认使用的资源管理器,会直接在
CurTransactionResourceOwner- 含义:指向当前(子)事务的
curTransactionOwner,只在portal创建时和触发器中使用,开发中大部分时间不需要关注,关注TransactionState→curTransactionOwner即可。
- 含义:指向当前(子)事务的
TopTransactionResourceOwner- 含义:顶层事务的
ResourceOwner。
- 含义:顶层事务的
AuxProcessResourceOwner- 含义:辅助进程使用,例如vacuum、walsender等等。
生命周期
(CurTransactionResourceOwner的使用场景有限)需要关注的是TransactionState→curTransactionOwner。



