- Notifications
You must be signed in to change notification settings - Fork5.2k
Commitd526575
committed
Make large sequential scans and VACUUMs work in a limited-size "ring" of
buffers, rather than blowing out the whole shared-buffer arena. Aside fromavoiding cache spoliation, this fixes the problem that VACUUM formerly tendedto cause a WAL flush for every page it modified, because we had it hacked touse only a single buffer. Those flushes will now occur only once perring-ful. The exact ring size, and the threshold for seqscans to switch intothe ring usage pattern, remain under debate; but the infrastructure seemsdone. The key bit of infrastructure is a new optional BufferAccessStrategyobject that can be passed to ReadBuffer operations; this replaces the formerStrategyHintVacuum API.This patch also changes the buffer usage-count methodology a bit: we nowadvance usage_count when first pinning a buffer, rather than when lastunpinning it. To preserve the behavior that a buffer's lifetime starts todecrease when it's released, the clock sweep code is modified to not decrementusage_count of pinned buffers.Work not done in this commit: teach GiST and GIN indexes to use the vacuumBufferAccessStrategy for vacuum-driven fetches.Original patch by Simon, reworked by Heikki and again by Tom.1 parent0a6f2ee commitd526575
File tree
24 files changed
+723
-263
lines changed- src
- backend
- access
- hash
- heap
- nbtree
- transam
- catalog
- commands
- postmaster
- storage/buffer
- tcop
- include
- access
- commands
- storage
24 files changed
+723
-263
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
547 | 547 | | |
548 | 548 | | |
549 | 549 | | |
550 | | - | |
551 | | - | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
552 | 553 | | |
553 | 554 | | |
554 | 555 | | |
| |||
596 | 597 | | |
597 | 598 | | |
598 | 599 | | |
599 | | - | |
| 600 | + | |
| 601 | + | |
600 | 602 | | |
601 | 603 | | |
602 | 604 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
362 | 362 | | |
363 | 363 | | |
364 | 364 | | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
365 | 368 | | |
366 | 369 | | |
367 | 370 | | |
| |||
370 | 373 | | |
371 | 374 | | |
372 | 375 | | |
373 | | - | |
| 376 | + | |
| 377 | + | |
374 | 378 | | |
375 | 379 | | |
376 | 380 | | |
| |||
413 | 417 | | |
414 | 418 | | |
415 | 419 | | |
416 | | - | |
417 | | - | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
418 | 425 | | |
419 | 426 | | |
420 | 427 | | |
| |||
424 | 431 | | |
425 | 432 | | |
426 | 433 | | |
427 | | - | |
428 | | - | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
429 | 439 | | |
430 | 440 | | |
431 | 441 | | |
| |||
434 | 444 | | |
435 | 445 | | |
436 | 446 | | |
| 447 | + | |
| 448 | + | |
437 | 449 | | |
438 | 450 | | |
439 | 451 | | |
| |||
558 | 570 | | |
559 | 571 | | |
560 | 572 | | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
561 | 576 | | |
562 | 577 | | |
563 | 578 | | |
564 | 579 | | |
565 | | - | |
| 580 | + | |
| 581 | + | |
566 | 582 | | |
567 | 583 | | |
568 | 584 | | |
| |||
581 | 597 | | |
582 | 598 | | |
583 | 599 | | |
584 | | - | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
585 | 605 | | |
586 | 606 | | |
587 | 607 | | |
| |||
595 | 615 | | |
596 | 616 | | |
597 | 617 | | |
598 | | - | |
599 | | - | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
600 | 622 | | |
601 | 623 | | |
602 | 624 | | |
603 | 625 | | |
604 | 626 | | |
605 | 627 | | |
606 | 628 | | |
607 | | - | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
608 | 634 | | |
609 | 635 | | |
610 | 636 | | |
| |||
644 | 670 | | |
645 | 671 | | |
646 | 672 | | |
647 | | - | |
| 673 | + | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
648 | 678 | | |
649 | 679 | | |
650 | 680 | | |
| |||
688 | 718 | | |
689 | 719 | | |
690 | 720 | | |
691 | | - | |
| 721 | + | |
692 | 722 | | |
693 | 723 | | |
694 | 724 | | |
695 | 725 | | |
696 | 726 | | |
697 | | - | |
| 727 | + | |
698 | 728 | | |
699 | | - | |
| 729 | + | |
| 730 | + | |
| 731 | + | |
| 732 | + | |
| 733 | + | |
700 | 734 | | |
701 | 735 | | |
702 | 736 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
214 | 214 | | |
215 | 215 | | |
216 | 216 | | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
217 | 245 | | |
218 | 246 | | |
219 | 247 | | |
| |||
840 | 868 | | |
841 | 869 | | |
842 | 870 | | |
843 | | - | |
| 871 | + | |
844 | 872 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
86 | 104 | | |
87 | 105 | | |
88 | 106 | | |
| |||
123 | 141 | | |
124 | 142 | | |
125 | 143 | | |
126 | | - | |
127 | | - | |
128 | | - | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
129 | 155 | | |
130 | 156 | | |
131 | 157 | | |
| |||
938 | 964 | | |
939 | 965 | | |
940 | 966 | | |
| 967 | + | |
941 | 968 | | |
942 | 969 | | |
943 | 970 | | |
| |||
1007 | 1034 | | |
1008 | 1035 | | |
1009 | 1036 | | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
1010 | 1040 | | |
1011 | 1041 | | |
1012 | 1042 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| |||
786 | 786 | | |
787 | 787 | | |
788 | 788 | | |
789 | | - | |
| 789 | + | |
| 790 | + | |
790 | 791 | | |
791 | | - | |
| 792 | + | |
792 | 793 | | |
793 | 794 | | |
794 | 795 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
10 | | - | |
| 10 | + | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| |||
1799 | 1799 | | |
1800 | 1800 | | |
1801 | 1801 | | |
| 1802 | + | |
| 1803 | + | |
| 1804 | + | |
| 1805 | + | |
| 1806 | + | |
| 1807 | + | |
| 1808 | + | |
| 1809 | + | |
| 1810 | + | |
| 1811 | + | |
| 1812 | + | |
| 1813 | + | |
| 1814 | + | |
| 1815 | + | |
| 1816 | + | |
| 1817 | + | |
| 1818 | + | |
| 1819 | + | |
| 1820 | + | |
| 1821 | + | |
| 1822 | + | |
| 1823 | + | |
| 1824 | + | |
| 1825 | + | |
| 1826 | + | |
| 1827 | + | |
| 1828 | + | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
1802 | 1832 | | |
1803 | 1833 | | |
1804 | 1834 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
1658 | 1658 | | |
1659 | 1659 | | |
1660 | 1660 | | |
| 1661 | + | |
1661 | 1662 | | |
1662 | 1663 | | |
1663 | 1664 | | |
| |||
0 commit comments
Comments
(0)