forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commitf9eb7c1
committed
Avoid O(N^2) cost in ExecFindRowMark().
If there are many ExecRowMark structs, we spent O(N^2) time inExecFindRowMark during executor startup. Once upon a time this wasnot of great concern, but the addition of native partitioning hassqueezed out enough other costs that this can become the dominantoverhead in some use-cases for tables with many partitions.To fix, simply replace that List data structure with an array.This adds a little bit of cost to execCurrentOf(), but not much,and anyway that code path is neither of large importance nor veryefficient now. If we ever decide it is a bottleneck, constructing ahash table for lookup-by-tableoid would likely be the thing to do.Per complaint from Amit Langote, though this is different fromhis fix proposal.Discussion:https://postgr.es/m/468c85d9-540e-66a2-1dde-fec2b741e688@lab.ntt.co.jp1 parenteee01d6 commitf9eb7c1
File tree
4 files changed
+82
-67
lines changed- src
- backend/executor
- include/nodes
4 files changed
+82
-67
lines changedOriginal file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
91 | 91 |
| |
92 | 92 |
| |
93 | 93 |
| |
94 |
| - | |
| 94 | + | |
95 | 95 |
| |
96 | 96 |
| |
97 |
| - | |
| 97 | + | |
98 | 98 |
| |
99 | 99 |
| |
100 | 100 |
| |
101 | 101 |
| |
102 | 102 |
| |
103 | 103 |
| |
104 |
| - | |
| 104 | + | |
105 | 105 |
| |
106 |
| - | |
| 106 | + | |
107 | 107 |
| |
108 |
| - | |
| 108 | + | |
| 109 | + | |
109 | 110 |
| |
110 | 111 |
| |
111 | 112 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
909 | 909 |
| |
910 | 910 |
| |
911 | 911 |
| |
912 |
| - | |
| 912 | + | |
913 | 913 |
| |
914 |
| - | |
915 |
| - | |
| 914 | + | |
916 | 915 |
| |
917 |
| - | |
918 |
| - | |
919 |
| - | |
920 |
| - | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
921 | 924 |
| |
922 |
| - | |
923 |
| - | |
924 |
| - | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
925 | 928 |
| |
926 |
| - | |
927 |
| - | |
| 929 | + | |
| 930 | + | |
928 | 931 |
| |
929 |
| - | |
930 |
| - | |
931 |
| - | |
932 |
| - | |
933 |
| - | |
934 |
| - | |
935 |
| - | |
936 |
| - | |
937 |
| - | |
938 |
| - | |
939 |
| - | |
940 |
| - | |
941 |
| - | |
942 |
| - | |
943 |
| - | |
944 |
| - | |
945 |
| - | |
946 |
| - | |
947 |
| - | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
| 938 | + | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
| 949 | + | |
| 950 | + | |
948 | 951 |
| |
949 |
| - | |
950 |
| - | |
951 |
| - | |
952 |
| - | |
953 |
| - | |
954 |
| - | |
955 |
| - | |
956 |
| - | |
957 |
| - | |
958 |
| - | |
959 |
| - | |
960 |
| - | |
961 |
| - | |
962 |
| - | |
963 |
| - | |
964 |
| - | |
965 |
| - | |
966 |
| - | |
| 952 | + | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
| 957 | + | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
| 972 | + | |
| 973 | + | |
967 | 974 |
| |
968 | 975 |
| |
969 | 976 |
| |
| |||
2394 | 2401 |
| |
2395 | 2402 |
| |
2396 | 2403 |
| |
2397 |
| - | |
2398 |
| - | |
2399 |
| - | |
| 2404 | + | |
| 2405 | + | |
2400 | 2406 |
| |
2401 |
| - | |
| 2407 | + | |
2402 | 2408 |
| |
2403 |
| - | |
| 2409 | + | |
2404 | 2410 |
| |
2405 | 2411 |
| |
2406 | 2412 |
| |
| |||
3131 | 3137 |
| |
3132 | 3138 |
| |
3133 | 3139 |
| |
| 3140 | + | |
3134 | 3141 |
| |
3135 | 3142 |
| |
3136 | 3143 |
| |
| |||
3148 | 3155 |
| |
3149 | 3156 |
| |
3150 | 3157 |
| |
3151 |
| - | |
3152 | 3158 |
| |
3153 | 3159 |
| |
3154 | 3160 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
113 | 113 |
| |
114 | 114 |
| |
115 | 115 |
| |
| 116 | + | |
116 | 117 |
| |
117 | 118 |
| |
118 | 119 |
| |
| |||
142 | 143 |
| |
143 | 144 |
| |
144 | 145 |
| |
145 |
| - | |
146 |
| - | |
147 | 146 |
| |
148 | 147 |
| |
149 | 148 |
| |
| |||
709 | 708 |
| |
710 | 709 |
| |
711 | 710 |
| |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
| 716 | + | |
712 | 717 |
| |
713 | 718 |
| |
714 | 719 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
34 | 34 |
| |
35 | 35 |
| |
36 | 36 |
| |
| 37 | + | |
37 | 38 |
| |
38 | 39 |
| |
39 | 40 |
| |
| |||
491 | 492 |
| |
492 | 493 |
| |
493 | 494 |
| |
| 495 | + | |
| 496 | + | |
494 | 497 |
| |
495 | 498 |
| |
496 | 499 |
| |
| |||
537 | 540 |
| |
538 | 541 |
| |
539 | 542 |
| |
540 |
| - | |
541 |
| - | |
542 | 543 |
| |
543 | 544 |
| |
544 | 545 |
| |
| |||
607 | 608 |
| |
608 | 609 |
| |
609 | 610 |
| |
610 |
| - | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
611 | 614 |
| |
612 | 615 |
| |
613 | 616 |
| |
| |||
629 | 632 |
| |
630 | 633 |
| |
631 | 634 |
| |
632 |
| - | |
| 635 | + | |
633 | 636 |
| |
634 | 637 |
| |
635 | 638 |
| |
| |||
638 | 641 |
| |
639 | 642 |
| |
640 | 643 |
| |
641 |
| - | |
| 644 | + | |
642 | 645 |
| |
643 | 646 |
| |
644 | 647 |
| |
|
0 commit comments
Comments
(0)