forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitbfe56cd
committed
Delay extraction of TIDBitmap per page offsets
Pages from the bitmap created by the TIDBitmap API can be exact orlossy. The TIDBitmap API extracts the tuple offsets from exact pagesinto an array for the convenience of the caller.This was done in tbm_private|shared_iterate() right after advancing theiterator. However, as long as tbm_private|shared_iterate() set areference to the PagetableEntry in the TBMIterateResult, the offsetextraction can be done later.Waiting to extract the tuple offsets has a few benefits. For the sharediterator case, it allows us to extract the offsets after dropping theshared iterator state lock, reducing time spent holding a contendedlock.Separating the iteration step and extracting the offsets later alsoallows us to avoid extracting the offsets for prefetched blocks. Thoseoffsets were never used, so the overhead of extracting and storing themwas wasted.The real motivation for this change, however, is that future commitswill make bitmap heap scan use the read stream API. This requires aTBMIterateResult per issued block. By removing the array of tupleoffsets from the TBMIterateResult and only extracting the offsets whenthey are used, we reduce the memory required for per buffer datasubstantially.Suggested-by: Thomas Munro <thomas.munro@gmail.com>Reviewed-by: Thomas Munro <thomas.munro@gmail.com>Discussion:https://postgr.es/m/CA%2BhUKGLHbKP3jwJ6_%2BhnGi37Pw3BD5j2amjV3oSk7j-KyCnY7Q%40mail.gmail.com1 parentb8778c4 commitbfe56cd
File tree
6 files changed
+87
-50
lines changed- src
- backend
- access
- gin
- heap
- nodes
- include
- access
- nodes
6 files changed
+87
-50
lines changedLines changed: 19 additions & 9 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
333 | 333 |
| |
334 | 334 |
| |
335 | 335 |
| |
| 336 | + | |
336 | 337 |
| |
337 | 338 |
| |
338 | 339 |
| |
| |||
828 | 829 |
| |
829 | 830 |
| |
830 | 831 |
| |
831 |
| - | |
| 832 | + | |
832 | 833 |
| |
833 | 834 |
| |
834 | 835 |
| |
| |||
845 | 846 |
| |
846 | 847 |
| |
847 | 848 |
| |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
| 853 | + | |
| 854 | + | |
848 | 855 |
| |
849 | 856 |
| |
850 |
| - | |
| 857 | + | |
851 | 858 |
| |
852 | 859 |
| |
853 | 860 |
| |
| |||
874 | 881 |
| |
875 | 882 |
| |
876 | 883 |
| |
877 |
| - | |
878 |
| - | |
| 884 | + | |
| 885 | + | |
879 | 886 |
| |
| 887 | + | |
| 888 | + | |
| 889 | + | |
880 | 890 |
| |
881 | 891 |
| |
882 |
| - | |
| 892 | + | |
883 | 893 |
| |
884 | 894 |
| |
885 | 895 |
| |
886 | 896 |
| |
887 | 897 |
| |
888 | 898 |
| |
889 |
| - | |
| 899 | + | |
890 | 900 |
| |
891 |
| - | |
| 901 | + | |
892 | 902 |
| |
893 | 903 |
| |
894 | 904 |
| |
895 | 905 |
| |
896 |
| - | |
| 906 | + | |
897 | 907 |
| |
898 | 908 |
| |
899 | 909 |
| |
900 | 910 |
| |
901 | 911 |
| |
902 |
| - | |
| 912 | + | |
903 | 913 |
| |
904 | 914 |
| |
905 | 915 |
| |
|
Lines changed: 1 addition & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
107 | 107 |
| |
108 | 108 |
| |
109 | 109 |
| |
| 110 | + | |
110 | 111 |
| |
111 | 112 |
| |
112 | 113 |
| |
|
Lines changed: 14 additions & 3 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
2127 | 2127 |
| |
2128 | 2128 |
| |
2129 | 2129 |
| |
| 2130 | + | |
| 2131 | + | |
2130 | 2132 |
| |
2131 | 2133 |
| |
2132 | 2134 |
| |
| |||
2145 | 2147 |
| |
2146 | 2148 |
| |
2147 | 2149 |
| |
| 2150 | + | |
| 2151 | + | |
| 2152 | + | |
| 2153 | + | |
| 2154 | + | |
2148 | 2155 |
| |
2149 | 2156 |
| |
2150 | 2157 |
| |
| |||
2172 | 2179 |
| |
2173 | 2180 |
| |
2174 | 2181 |
| |
| 2182 | + | |
2175 | 2183 |
| |
2176 |
| - | |
| 2184 | + | |
2177 | 2185 |
| |
2178 | 2186 |
| |
2179 | 2187 |
| |
| |||
2216 | 2224 |
| |
2217 | 2225 |
| |
2218 | 2226 |
| |
2219 |
| - | |
| 2227 | + | |
| 2228 | + | |
| 2229 | + | |
| 2230 | + | |
2220 | 2231 |
| |
2221 |
| - | |
| 2232 | + | |
2222 | 2233 |
| |
2223 | 2234 |
| |
2224 | 2235 |
| |
|
Lines changed: 24 additions & 33 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
40 | 40 |
| |
41 | 41 |
| |
42 | 42 |
| |
43 |
| - | |
44 | 43 |
| |
45 | 44 |
| |
46 | 45 |
| |
47 | 46 |
| |
48 | 47 |
| |
49 | 48 |
| |
50 | 49 |
| |
51 |
| - | |
52 |
| - | |
53 |
| - | |
54 |
| - | |
55 |
| - | |
56 |
| - | |
57 |
| - | |
58 |
| - | |
59 | 50 |
| |
60 | 51 |
| |
61 | 52 |
| |
| |||
67 | 58 |
| |
68 | 59 |
| |
69 | 60 |
| |
70 |
| - | |
| 61 | + | |
71 | 62 |
| |
72 | 63 |
| |
73 | 64 |
| |
| |||
79 | 70 |
| |
80 | 71 |
| |
81 | 72 |
| |
82 |
| - | |
| 73 | + | |
83 | 74 |
| |
84 | 75 |
| |
85 | 76 |
| |
| |||
181 | 172 |
| |
182 | 173 |
| |
183 | 174 |
| |
184 |
| - | |
| 175 | + | |
185 | 176 |
| |
186 | 177 |
| |
187 | 178 |
| |
| |||
222 | 213 |
| |
223 | 214 |
| |
224 | 215 |
| |
225 |
| - | |
| 216 | + | |
226 | 217 |
| |
227 | 218 |
| |
228 | 219 |
| |
| |||
390 | 381 |
| |
391 | 382 |
| |
392 | 383 |
| |
393 |
| - | |
| 384 | + | |
394 | 385 |
| |
395 | 386 |
| |
396 | 387 |
| |
| |||
696 | 687 |
| |
697 | 688 |
| |
698 | 689 |
| |
699 |
| - | |
700 |
| - | |
701 |
| - | |
| 690 | + | |
702 | 691 |
| |
703 | 692 |
| |
704 | 693 |
| |
| |||
906 | 895 |
| |
907 | 896 |
| |
908 | 897 |
| |
909 |
| - | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
910 | 901 |
| |
911 |
| - | |
912 |
| - | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
| 905 | + | |
913 | 906 |
| |
| 907 | + | |
914 | 908 |
| |
915 | 909 |
| |
916 | 910 |
| |
| |||
925 | 919 |
| |
926 | 920 |
| |
927 | 921 |
| |
928 |
| - | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
929 | 927 |
| |
930 | 928 |
| |
931 | 929 |
| |
| |||
1012 | 1010 |
| |
1013 | 1011 |
| |
1014 | 1012 |
| |
1015 |
| - | |
1016 | 1013 |
| |
1017 | 1014 |
| |
| 1015 | + | |
1018 | 1016 |
| |
1019 | 1017 |
| |
1020 | 1018 |
| |
| |||
1023 | 1021 |
| |
1024 | 1022 |
| |
1025 | 1023 |
| |
1026 |
| - | |
1027 | 1024 |
| |
1028 | 1025 |
| |
1029 | 1026 |
| |
1030 | 1027 |
| |
1031 | 1028 |
| |
1032 | 1029 |
| |
1033 | 1030 |
| |
1034 |
| - | |
1035 |
| - | |
| 1031 | + | |
1036 | 1032 |
| |
1037 |
| - | |
1038 | 1033 |
| |
1039 | 1034 |
| |
1040 | 1035 |
| |
| |||
1107 | 1102 |
| |
1108 | 1103 |
| |
1109 | 1104 |
| |
1110 |
| - | |
1111 | 1105 |
| |
1112 | 1106 |
| |
| 1107 | + | |
1113 | 1108 |
| |
1114 | 1109 |
| |
1115 | 1110 |
| |
| |||
1120 | 1115 |
| |
1121 | 1116 |
| |
1122 | 1117 |
| |
1123 |
| - | |
1124 | 1118 |
| |
1125 |
| - | |
1126 |
| - | |
| 1119 | + | |
1127 | 1120 |
| |
1128 |
| - | |
1129 | 1121 |
| |
1130 | 1122 |
| |
1131 | 1123 |
| |
| |||
1473 | 1465 |
| |
1474 | 1466 |
| |
1475 | 1467 |
| |
1476 |
| - | |
1477 |
| - | |
| 1468 | + | |
1478 | 1469 |
| |
1479 | 1470 |
| |
1480 | 1471 |
| |
|
Lines changed: 2 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
354 | 354 |
| |
355 | 355 |
| |
356 | 356 |
| |
| 357 | + | |
| 358 | + | |
357 | 359 |
| |
358 | 360 |
| |
359 | 361 |
| |
|
Lines changed: 27 additions & 5 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
22 | 22 |
| |
23 | 23 |
| |
24 | 24 |
| |
| 25 | + | |
25 | 26 |
| |
26 | 27 |
| |
27 | 28 |
| |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
28 | 36 |
| |
29 | 37 |
| |
30 | 38 |
| |
| |||
53 | 61 |
| |
54 | 62 |
| |
55 | 63 |
| |
56 |
| - | |
57 |
| - | |
| 64 | + | |
| 65 | + | |
58 | 66 |
| |
59 |
| - | |
60 |
| - | |
61 |
| - | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
62 | 80 |
| |
63 | 81 |
| |
64 | 82 |
| |
| |||
75 | 93 |
| |
76 | 94 |
| |
77 | 95 |
| |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
78 | 100 |
| |
79 | 101 |
| |
80 | 102 |
| |
|
0 commit comments
Comments
(0)