暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

PostgreSQL并行特性

原创 多米爸比 2021-09-14
1180

下面这张图片描述了PG各个版本对并行特性的支持情况

image.png

从上面的图中可以看出:

  • PG从9.6版本正式开始支持并行特性,包括并行全表扫描及并行查询等。

  • 从9.6到10增加了三个新并行特性,包括Parallel Merge Joins、Parallel B-tree Index Scan、Parallel bitmap heap scan。

  • 从10到11增加了两个新并行特性,包括Parallelized CREATE INDEX for B-tree index、Parallel Hash Joins。

  • 从12到13增加了一个新并行特性:Parallelized VACUUM for Indexes。

  • 从13到14增加了三个新并行特性:包括Parallel query execution on remote databases、Foreign data wrapper query parallelism、Query parallelism for RETURN QUERY。

下面简单了解一下这些并行特性。

Parallel dump&restore

$ pg_dump --help |grep "\--jobs"
  -j, --jobs=NUM               use this many parallel jobs to dump

$ pg_restore --help |grep "\--jobs"
  -j, --jobs=NUM               use this many parallel jobs to restore

并行备份只能以备份目录的格式来进行,会对数据库服务器产生更多的负载来降低dump所需的时间。pg_dump会打开NUM+1个连接,所以数据库的max_connections要设置合理。

Parallel vacuumdb jobs

$ vacuumdb --help |grep "\--jobs"
  -j, --jobs=NUM                  use this many concurrent connections to vacuum

$ vacuumdb --help |grep "\--parallel"
  -P, --parallel=PARALLEL_DEGREE  use this many background workers for vacuum, if available

vacuumdb会对所有的数据库做vacuum,–jobs参数使用并发的连接去做vacuum。这种方式能降低处理时间,但是会增加数据库服务器的负载。另外如果与full模式一起使用会对系统元数据目录产生死锁。第二个选项parallel是使用后台的workers进程来做。

Parallel Query

  • PREARE and EXECUTE

Parallel Scan

  • Parallel Seq Scan(full table scans)/Join and Aggregate
  • Parallel B-tree Index Scan/Index Only Scan
  • Parallel bitmap heap scan

Parallel Join

  • Parallel Join, aggregate
  • Parallel Merge Joins
  • Parallel Hash Joins

Parallelized CREATE INDEX

  • Parallelized CREATE INDEX for B-tree index。

Parallelized VACUUM for Indexes

单个table有多个索引时, 可以并行vacuum索引。

最后修改时间:2022-10-30 11:41:07
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论