Change prefetch logic in vacuum (#11650)

## Problem
See https://neondb.slack.com/archives/C03QLRH7PPD/p1745003314183649

Vacuum doesn't use prefetch because this strange logic in
`lazy_scan_heap`:

```
			/* And only up to the next unskippable block */
			if (next_prefetch_block + prefetch_budget > vacrel->next_unskippable_block)
				prefetch_budget = vacrel->next_unskippable_block - next_prefetch_block;
```
## Summary of changes

Disable prefetch only if vacuum jumps to next skippable block (there is
SKIP_PAGES_THRESHOLD) which cancel seqscan and perform jump only if gap
is large enough).


Postgres PRs:
https://github.com/neondatabase/postgres/pull/620
https://github.com/neondatabase/postgres/pull/621
https://github.com/neondatabase/postgres/pull/622
https://github.com/neondatabase/postgres/pull/623

---------

Co-authored-by: Konstantin Knizhnik <knizhnik@neon.tech>
This commit is contained in:
Konstantin Knizhnik
2025-05-09 09:54:40 +03:00
committed by GitHub
parent b37bb7d7ed
commit 101e115b38
4 changed files with 6 additions and 6 deletions

View File

@@ -1,7 +1,7 @@
{
"v17": [
"17.4",
"b763ab54b98d232a0959371ab1d07f06ed77c49e"
"0d59c91c1a23e667f1d1169d5f040b3fa0a0ab44"
],
"v16": [
"16.8",
@@ -9,10 +9,10 @@
],
"v15": [
"15.12",
"b838c8969b7c63f3e637a769656f5f36793b797c"
"72f83df76c61ce18d81bd371f0afd2a43d59c052"
],
"v14": [
"14.17",
"108856a4ae76be285b04497a0ed08fcbe60ddbe9"
"06b405bc982fd53522689aa4acbfd9c44b7993cf"
]
}