Hubert 'depesz' Lubaczewski:等待 PostgreSQL 18 – 允许为 GIN 索引并行创建索引

💡 原文英文,约1100词,阅读约需4分钟。
📝

内容提要

2025年3月3日,Tomas Vondra提交补丁,支持为GIN索引并行创建索引,显著提高大型表的索引构建速度。每个工作线程处理表的子集,最终合并结果,测试显示创建索引时间减少约30%。

🎯

关键要点

  • 2025年3月3日,Tomas Vondra提交补丁,支持为GIN索引并行创建索引。
  • 并行创建索引显著提高大型表的索引构建速度,测试显示创建索引时间减少约30%。
  • 每个工作线程处理表的子集,最终合并结果,减少了主线程的负担。
  • 原始补丁由Tomas Vondra提交,经过Matthias van de Meent的审查和改进。
  • GIN索引创建速度较慢,此次改动可能在某些情况下带来显著改善。
  • 测试中创建了一个包含随机数组的表,并进行了索引创建的时间对比。
  • 在不使用并行的情况下,创建索引耗时77111.482毫秒。
  • 启用并行后,创建索引耗时53602.822毫秒,显示出约30%的时间减少。
  • 创建的索引大小在并行和非并行情况下有所不同,后者更大,但功能正常。

延伸问答

什么是GIN索引的并行创建?

GIN索引的并行创建允许使用多个工作线程同时构建索引,从而提高大型表的索引构建速度。

并行创建GIN索引的效果如何?

并行创建GIN索引可以将索引构建时间减少约30%,显著提高效率。

Tomas Vondra提交的补丁有什么重要性?

Tomas Vondra提交的补丁使得GIN索引可以并行创建,解决了其创建速度较慢的问题,具有重要的实用价值。

在不使用并行的情况下,创建GIN索引需要多长时间?

在不使用并行的情况下,创建GIN索引耗时77111.482毫秒。

使用并行创建GIN索引后,索引的大小有什么变化?

使用并行创建GIN索引后,索引的大小为769MB,相比于非并行创建的1099MB有所减少。

并行创建GIN索引的工作原理是什么?

并行创建GIN索引通过将表分成子集,由多个工作线程分别处理,然后合并结果,从而提高效率。

➡️

继续阅读