shmem_request_hook
是一个用于加载到内存中的钩子,用于请求额外共享内存的扩展。
shmem_request_hook
在PostgreSQL 15 中添加。
更改历史
- PostgreSQL 15
- 添加 (提交 4f2400cb)
示例
shmem_request_hook
的使用示例
/* * Module load callback */ void _PG_init(void) { if (!process_shared_preload_libraries_in_progress) return; /* * Install hooks. */ #if (PG_VERSION_NUM >= 150000) prev_shmem_request_hook = shmem_request_hook; shmem_request_hook = extension_shmem_request; #endif prev_shmem_startup_hook = shmem_startup_hook; shmem_startup_hook = extension_shmem_startup; /* ... */ } #if (PG_VERSION_NUM >= 150000) /* * shmem_requst_hook: request shared memory */ static void extension_shmem_request(void) { if (prev_shmem_request_hook) prev_shmem_request_hook(); RequestAddinShmemSpace(MAXALIGN(sizeof(extensionSharedState))); RequestNamedLWLockTranche(TRANCHE_NAME, 1); } #endif
参考
- PostgreSQL 文档: 共享内存和 LWLocks
有用链接
- PostgreSQL 15: _PG_init() 和 shmem_request_hook - 2022 年 5 月 Ian Barwick 的博文