Allow GIN indexes to be created in parallel (Tomas Vondra, Matthias van de Meent)
<ulink url="&commit_baseurl;8492feb98">§</ulink>
</para>
</listitem>
<!--
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
2025-04-02 [e9e7b6604] Add GiST and btree sortsupport routines for range types
-->
<listitem>
<para>
Allow values to be sorted to speed rangetype GiST and btree index builds (Bernd Helmle)
<ulink url="&commit_baseurl;e9e7b6604">§</ulink>
</para>
</listitem>
</itemizedlist>
</sect4>
<sect4 id="release-18-performance">
<title>General Performance</title>
<itemizedlist>
<!--
Author: Andres Freund <andres@anarazel.de>
2025-03-17 [02844012b] aio: Basic subsystem initialization
Author: Andres Freund <andres@anarazel.de>
2025-03-17 [da7226993] aio: Add core asynchronous I/O infrastructure
Author: Andres Freund <andres@anarazel.de>
2025-03-18 [55b454d0e] aio: Infrastructure for io_method=worker
Author: Andres Freund <andres@anarazel.de>
2025-03-18 [247ce06b8] aio: Add io_method=worker
Author: Thomas Munro <tmunro@postgresql.org>
2025-03-19 [10f664684] Introduce io_max_combine_limit.
Author: Thomas Munro <tmunro@postgresql.org>
2025-03-19 [06fb5612c] Increase io_combine_limit range to 1MB.
Author: Andres Freund <andres@anarazel.de>
2025-03-26 [c325a7633] aio: Add io_method=io_uring
Author: Andres Freund <andres@anarazel.de>
2025-03-29 [50cb7505b] aio: Implement support for reads in smgr/md/fd
Author: Andres Freund <andres@anarazel.de>
2025-03-30 [047cba7fa] bufmgr: Implement AIO read support
Author: Andres Freund <andres@anarazel.de>
2025-03-30 [12ce89fd0] bufmgr: Use AIO in StartReadBuffers()
Author: Andres Freund <andres@anarazel.de>
2025-03-30 [2a5e709e7] Enable IO concurrency on all systems
-->
<listitem>
<para>
Add an asynchronous I/O subsystem (Andres Freund, Thomas Munro, Nazir Bilal Yavuz, Melanie Plageman)
<ulink url="&commit_baseurl;02844012b">§</ulink>
<ulink url="&commit_baseurl;da7226993">§</ulink>
<ulink url="&commit_baseurl;55b454d0e">§</ulink>
<ulink url="&commit_baseurl;247ce06b8">§</ulink>
<ulink url="&commit_baseurl;10f664684">§</ulink>
<ulink url="&commit_baseurl;06fb5612c">§</ulink>
<ulink url="&commit_baseurl;c325a7633">§</ulink>
<ulink url="&commit_baseurl;50cb7505b">§</ulink>
<ulink url="&commit_baseurl;047cba7fa">§</ulink>
<ulink url="&commit_baseurl;12ce89fd0">§</ulink>
<ulink url="&commit_baseurl;2a5e709e7">§</ulink>
</para>
<para>
This feature allows backends to queue multiple read requests, which allows for more efficient sequential scans, bitmap heap scans, vacuums, etc.
This is enabled by server variable io_method, with server variables io_combine_limit and io_max_combine_limit added to control it. This also enables
effective_io_concurrency and maintenance_io_concurrency values greater than zero for systems without fadvise() support. The new system view pg_aios shows the file handles being used
for asynchronous I/O.
</para>
</listitem>
<!--
Author: Tomas Vondra <tomas.vondra@postgresql.org>
2024-09-21 [c4d5cb71d] Increase the number of fast-path lock slots
-->
<listitem>
<para>
Improve the locking performance of queries that access many relations (Tomas Vondra)
<ulink url="&commit_baseurl;c4d5cb71d">§</ulink>
</para>
</listitem>
<!--
Author: David Rowley <drowley@postgresql.org>
2024-08-20 [adf97c156] Speed up Hash Join by making ExprStates support hashing
Author: David Rowley <drowley@postgresql.org>
2024-12-11 [0f5738202] Use ExprStates for hashing in GROUP BY and SubPlans
Author: Jeff Davis <jdavis@postgresql.org>
2025-03-24 [4d143509c] Create accessor functions for TupleHashEntry.
Author: Jeff Davis <jdavis@postgresql.org>
2025-03-24 [a0942f441] Add ExecCopySlotMinimalTupleExtra().
Author: Jeff Davis <jdavis@postgresql.org>
2025-03-24 [626df47ad] Remove 'additional' pointer from TupleHashEntryData.
-->
<listitem>
<para>
Improve the performance and reduce memory usage of hash joins and GROUP