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索引通过将表分成子集,由多个工作线程分别处理,然后合并结果,从而提高效率。
🏷️
标签
➡️