PostgreSQL Parallel Woker编程模型

2020-06-17 00:00:00 并行 工作 内存 初始化 进程

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;

相关文章