PostgreSQL Parallel Woker编程模型
PostgreSQL(简称PG)从9.6【1】开始支持并行查询,并行查询后面离不开PG的Parallel Worker编程模型,按照PG的多进程模型写一个多进程并行的任务非常容易,笔者团队在PG 11.3的基础上开发的向量检索,支持多进程加速构建向量索引,但是PG的多进程编程与我们熟知的多线程编程还是有较大的差别,并且网络上缺少这方便的资料,笔者在这个上面踩了一些坑,所以这里首先与大家简单分享PG的多进程编程模型,然后以此为入口分析PG的多进程通信,后总结一下笔者踩的几个坑。
1 PG的多进程编程模型
1) 首先定义一个多进程间共享的数据结构
typedef struct ParallelXXXShared
{
/* immutable arguments */
Oid oid;
int nworkers;
int launched_workers;
/* mutable arguments */
int data;
slock_t mutex;
} ParallelXXXShared;
相关文章