postgresql/src/tools
Tomas Vondra 0b2a45a5d1 Compress TID lists when writing GIN tuples to disk
When serializing GIN tuples to tuplesorts during parallel index builds,
we can significantly reduce the amount of data by compressing the TID
lists. The GIN opclasses may produce a lot of data (depending on how
many keys are extracted from each row), and the TID compression is very
efficient and effective.

If the number of distinct keys is high, the first worker pass (reading
data from the table and writing them into a private tuplesort) may not
benefit from the compression very much. It is likely to spill data to
disk before the TID lists get long enough for the compression to help.
The second pass (writing the merged data into the shared tuplesort) is
more likely to benefit from compression.

The compression can be seen as a way to reduce the amount of disk space
needed by the parallel builds, because the data is written twice. First
into the per-worker tuplesorts, then into the shared tuplesort.

Author: Tomas Vondra
Reviewed-by: Matthias van de Meent, Andy Fan, Kirill Reshke
Discussion: https://postgr.es/m/6ab4003f-a8b8-4d75-a67f-f25ad98582dc%40enterprisedb.com
2025-03-04 19:02:05 +01:00
..
ci ci: Use a RAM disk for NetBSD and OpenBSD. 2025-03-04 11:29:21 +13:00
editors Make Emacs perl-mode indent more like perltidy. 2019-01-13 11:32:31 -08:00
ifaddrs Update copyright for 2025 2025-01-01 11:21:55 -05:00
perlcheck Activate perlcritic InputOutput::RequireCheckedSyscalls and fix resulting warnings 2024-03-19 07:09:31 +01:00
pg_bsd_indent Run perltidy 2025-01-22 10:15:32 +09:00
pginclude Add a bit of documentation related to IWYU 2025-01-15 18:57:53 +01:00
pgindent Compress TID lists when writing GIN tuples to disk 2025-03-04 19:02:05 +01:00
add_commit_links.pl Run perltidy 2025-01-22 10:15:32 +09:00
ccsym tools/ccsym: update for modern versions of gcc 2015-01-20 13:02:58 -05:00
check_bison_recursion.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
codelines Fix remaining stray references to CVS. 2010-09-22 19:51:39 -04:00
copyright.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
darwin_sysroot Move darwin sysroot determination into separate file 2022-09-01 16:54:19 -07:00
find_badmacros Remove cvs keywords from all files. 2010-09-20 22:08:53 +02:00
find_meson meson: Add initial version of meson based build system 2022-09-21 22:37:17 -07:00
find_static Fix trap in a few shell scripts 2022-09-20 18:50:16 +02:00
find_typedef Refer to OS X as "macOS", except for the port name which is still "darwin". 2016-09-25 15:40:57 -04:00
gen_export.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
gen_keywordlist.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
generate_editorconfig.py Add script to keep .editorconfig in sync with .gitattributes 2025-02-01 10:09:45 +01:00
git-external-diff Preserve information on use of git-external-diff 2018-05-24 23:45:31 +09:30
git_changelog Update copyright for 2025 2025-01-01 11:21:55 -05:00
install_files meson: make install_test_files more generic, rename to install_files 2023-03-23 21:20:18 -07:00
make_ctags Fix make_etags breakage on certain platforms. 2023-06-14 11:02:50 +09:00
make_etags Fix make_etags failure on Mac. 2023-02-15 09:52:42 +09:00
make_mkid Add another pgdefine path check, and a cvs-git change. 2011-08-26 21:52:35 -04:00
mark_pgdllimport.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
msvc_gendef.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
PerfectHash.pm Update copyright for 2025 2025-01-01 11:21:55 -05:00
pgflex Drop warning-free support for Flex 2.5.35 2025-01-15 15:35:08 +01:00
pgtest pgtest: fix spacing 2023-08-14 14:03:29 -04:00
rcgen meson: Add windows resource files 2022-10-05 09:56:05 -07:00
RELEASE_CHANGES scripts: add Perl script to add links to release notes 2024-09-16 13:26:37 -04:00
testint128.c Update copyright for 2025 2025-01-01 11:21:55 -05:00
testwrap Make PG_TEST_EXTRA env var override the "meson setup" option 2024-11-04 14:09:25 +02:00
valgrind.supp Record dependencies of a cast on other casts that it requires. 2022-10-17 14:02:05 -04:00
version_stamp.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00
win32tzlist.pl Update copyright for 2025 2025-01-01 11:21:55 -05:00