[improvement](mtmv) Improve the mv rewrite performance by optimize code usage
Proposed changes
Improve the performance from two points, one is optimize decide model method and another is to reuse the mv struc info:
- Instead of use
java.util.List#containsAllbyjava.util.Set#containsAllin methodAbstractMaterializedViewRule#decideMatchMode - Reuse the mv struct info in different query, because mv struct info is immobile.
Notes: tableBitSet in struct info is relevant to the
statementContextincascadesContext, if reuse the mv struct info for different query, we should re generate table bitset and construct new struct info with methodStructInfo#withTableBitSet
Thank you for your contribution to Apache Doris. Don't know what should be done next? See How to process your PR
Since 2024-03-18, the Document has been moved to doris-website. See Doris Document.
run buildall
TPC-H: Total hot run time: 40617 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 67a79a37cc302c500e53496f790d6be44f3933f9, data reload: false
------ Round 1 ----------------------------------
q1 17820 4431 4427 4427
q2 2665 207 201 201
q3 11519 1278 1287 1278
q4 10700 851 838 838
q5 8861 2758 2836 2758
q6 226 139 141 139
q7 975 624 621 621
q8 9370 2102 2081 2081
q9 9175 6499 6512 6499
q10 8990 3685 3735 3685
q11 467 254 252 252
q12 420 220 225 220
q13 18669 2942 2981 2942
q14 260 212 224 212
q15 518 471 470 470
q16 523 390 385 385
q17 983 755 734 734
q18 8001 7476 7484 7476
q19 3829 1610 1545 1545
q20 648 310 300 300
q21 4906 3891 3227 3227
q22 387 327 344 327
Total cold run time: 119912 ms
Total hot run time: 40617 ms
----- Round 2, with runtime_filter_mode=off -----
q1 4338 4210 4221 4210
q2 363 272 271 271
q3 3030 2739 2749 2739
q4 1906 1663 1609 1609
q5 5264 5301 5317 5301
q6 211 124 128 124
q7 2127 1760 1767 1760
q8 3178 3616 3364 3364
q9 8436 8354 8458 8354
q10 3913 3686 3700 3686
q11 581 490 487 487
q12 781 583 591 583
q13 17267 3011 3017 3011
q14 293 254 259 254
q15 520 469 488 469
q16 483 406 420 406
q17 1783 1485 1483 1483
q18 7671 7518 7447 7447
q19 1687 1610 1529 1529
q20 1982 1815 1797 1797
q21 4825 4640 4721 4640
q22 590 543 516 516
Total cold run time: 71229 ms
Total hot run time: 54040 ms
TPC-DS: Total hot run time: 172804 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 67a79a37cc302c500e53496f790d6be44f3933f9, data reload: false
query1 942 384 371 371
query2 6695 2292 2474 2292
query3 6656 218 217 217
query4 19840 17322 17402 17322
query5 4109 418 421 418
query6 259 158 162 158
query7 4601 302 292 292
query8 344 295 293 293
query9 8577 2391 2399 2391
query10 458 278 250 250
query11 10584 10100 10210 10100
query12 140 92 89 89
query13 1626 377 361 361
query14 9988 7490 7448 7448
query15 229 192 190 190
query16 7916 258 254 254
query17 1855 518 525 518
query18 2000 276 272 272
query19 203 156 145 145
query20 92 85 85 85
query21 205 135 129 129
query22 4247 4039 3975 3975
query23 33891 33006 33080 33006
query24 11996 2784 2892 2784
query25 664 376 365 365
query26 1792 152 154 152
query27 3049 310 313 310
query28 7471 2028 2037 2028
query29 1093 612 590 590
query30 303 150 150 150
query31 944 769 756 756
query32 99 53 55 53
query33 755 270 263 263
query34 1010 488 492 488
query35 755 609 605 605
query36 1073 894 868 868
query37 289 66 70 66
query38 2939 2826 2775 2775
query39 896 816 797 797
query40 272 160 123 123
query41 56 49 52 49
query42 101 98 97 97
query43 600 555 567 555
query44 1181 738 746 738
query45 188 165 169 165
query46 1068 709 709 709
query47 1866 1758 1779 1758
query48 356 297 283 283
query49 1206 384 387 384
query50 763 394 393 393
query51 7054 6735 6731 6731
query52 102 85 92 85
query53 352 283 288 283
query54 957 425 421 421
query55 76 72 75 72
query56 261 242 240 240
query57 1135 1026 1070 1026
query58 246 209 214 209
query59 3523 3145 3138 3138
query60 274 306 258 258
query61 104 87 86 86
query62 660 453 446 446
query63 314 286 285 285
query64 9773 2220 1741 1741
query65 3148 3128 3123 3123
query66 1392 325 324 324
query67 15213 14651 14840 14651
query68 4619 522 532 522
query69 439 262 277 262
query70 1175 1133 1170 1133
query71 405 269 265 265
query72 7452 5554 5486 5486
query73 717 325 317 317
query74 5990 5735 5626 5626
query75 3510 2641 2671 2641
query76 2801 993 985 985
query77 408 266 269 266
query78 10290 9978 9831 9831
query79 2100 507 507 507
query80 954 445 428 428
query81 528 225 222 222
query82 659 88 92 88
query83 246 169 171 169
query84 236 85 88 85
query85 1955 357 283 283
query86 482 288 322 288
query87 3286 3105 3101 3101
query88 4186 2338 2341 2338
query89 490 402 371 371
query90 2006 183 185 183
query91 121 96 99 96
query92 61 48 51 48
query93 2378 508 486 486
query94 1249 190 179 179
query95 398 312 303 303
query96 584 265 265 265
query97 3217 2996 2979 2979
query98 244 212 210 210
query99 1074 845 842 842
Total cold run time: 277086 ms
Total hot run time: 172804 ms
ClickBench: Total hot run time: 30.72 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 67a79a37cc302c500e53496f790d6be44f3933f9, data reload: false
query1 0.04 0.04 0.03
query2 0.08 0.04 0.04
query3 0.23 0.05 0.05
query4 1.68 0.10 0.08
query5 0.51 0.49 0.48
query6 1.14 0.73 0.72
query7 0.02 0.01 0.02
query8 0.04 0.04 0.04
query9 0.53 0.48 0.50
query10 0.53 0.54 0.52
query11 0.15 0.11 0.11
query12 0.14 0.12 0.12
query13 0.59 0.59 0.60
query14 0.78 0.77 0.81
query15 0.82 0.81 0.80
query16 0.37 0.34 0.36
query17 1.02 0.96 0.98
query18 0.21 0.26 0.23
query19 1.79 1.65 1.76
query20 0.02 0.01 0.00
query21 15.52 0.68 0.65
query22 4.38 7.40 2.22
query23 18.31 1.40 1.26
query24 2.00 0.23 0.21
query25 0.14 0.08 0.09
query26 0.27 0.17 0.16
query27 0.08 0.08 0.07
query28 13.31 1.01 1.00
query29 13.16 3.33 3.35
query30 0.24 0.05 0.06
query31 2.86 0.39 0.38
query32 3.28 0.48 0.47
query33 2.91 2.86 2.89
query34 17.16 4.40 4.44
query35 4.52 4.51 4.50
query36 0.65 0.46 0.47
query37 0.17 0.16 0.16
query38 0.16 0.14 0.15
query39 0.04 0.04 0.03
query40 0.17 0.14 0.15
query41 0.10 0.04 0.05
query42 0.06 0.05 0.05
query43 0.04 0.04 0.04
Total cold run time: 110.22 s
Total hot run time: 30.72 s
PR approved by at least one committer and no changes requested.
PR approved by anyone and no changes requested.
run buildall
TPC-H: Total hot run time: 41889 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 26c21f49e40044fe4878badb01e2218294e46c98, data reload: false
------ Round 1 ----------------------------------
q1 17597 4312 4279 4279
q2 2017 190 192 190
q3 10451 1213 1122 1122
q4 10209 757 886 757
q5 7435 2677 2611 2611
q6 226 136 134 134
q7 951 628 616 616
q8 9211 2074 2053 2053
q9 9564 6678 6652 6652
q10 9207 3928 3935 3928
q11 465 235 245 235
q12 454 235 241 235
q13 18518 3218 3176 3176
q14 266 225 246 225
q15 521 465 474 465
q16 538 414 403 403
q17 932 642 686 642
q18 8350 7881 7915 7881
q19 4922 1560 1551 1551
q20 638 306 309 306
q21 5042 4097 4138 4097
q22 403 345 331 331
Total cold run time: 117917 ms
Total hot run time: 41889 ms
----- Round 2, with runtime_filter_mode=off -----
q1 4540 4526 4420 4420
q2 379 277 285 277
q3 3118 2870 2890 2870
q4 1987 1660 1587 1587
q5 5381 5478 5446 5446
q6 222 126 125 125
q7 2201 1799 1790 1790
q8 3207 3418 3389 3389
q9 8561 8621 8679 8621
q10 4062 3744 3730 3730
q11 593 514 494 494
q12 791 644 616 616
q13 17203 3139 3187 3139
q14 324 273 262 262
q15 512 487 480 480
q16 485 438 435 435
q17 1823 1573 1465 1465
q18 7783 7652 7393 7393
q19 1690 1467 1517 1467
q20 1980 1790 1799 1790
q21 8072 4865 4816 4816
q22 605 535 519 519
Total cold run time: 75519 ms
Total hot run time: 55131 ms
TPC-DS: Total hot run time: 168342 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpcds-tools
TPC-DS sf100 test result on commit 26c21f49e40044fe4878badb01e2218294e46c98, data reload: false
query1 935 390 373 373
query2 6440 2520 2187 2187
query3 6645 199 200 199
query4 20084 17470 17418 17418
query5 4133 421 429 421
query6 247 168 155 155
query7 4588 292 298 292
query8 328 280 273 273
query9 8440 2370 2354 2354
query10 455 271 250 250
query11 10764 10237 10369 10237
query12 135 87 88 87
query13 1636 354 376 354
query14 10151 6179 7472 6179
query15 223 183 183 183
query16 7765 261 264 261
query17 1648 535 532 532
query18 1960 265 273 265
query19 193 153 152 152
query20 96 89 84 84
query21 198 134 135 134
query22 4433 4175 4083 4083
query23 33554 32879 33023 32879
query24 8315 2951 2850 2850
query25 577 368 361 361
query26 712 151 154 151
query27 2233 317 321 317
query28 5570 2050 2066 2050
query29 860 606 629 606
query30 247 151 154 151
query31 966 774 753 753
query32 85 51 54 51
query33 619 271 272 271
query34 869 471 476 471
query35 701 593 588 588
query36 1060 932 899 899
query37 102 67 74 67
query38 2949 2846 2770 2770
query39 868 819 791 791
query40 206 125 123 123
query41 52 49 50 49
query42 101 94 94 94
query43 572 540 513 513
query44 1075 719 735 719
query45 185 168 165 165
query46 1057 712 718 712
query47 1895 1802 1800 1800
query48 388 291 292 291
query49 857 385 387 385
query50 773 384 388 384
query51 6778 6669 6546 6546
query52 106 89 89 89
query53 361 292 283 283
query54 719 428 421 421
query55 76 75 69 69
query56 261 240 265 240
query57 1120 1063 1053 1053
query58 230 207 208 207
query59 3282 3147 3057 3057
query60 277 255 259 255
query61 133 88 87 87
query62 604 456 448 448
query63 305 288 285 285
query64 8485 2227 1718 1718
query65 3160 3052 3140 3052
query66 853 325 326 325
query67 15281 14742 14944 14742
query68 4530 544 531 531
query69 451 268 268 268
query70 1108 1061 1158 1061
query71 365 267 266 266
query72 7738 2795 2532 2532
query73 706 321 316 316
query74 6157 5668 5630 5630
query75 3334 2608 2622 2608
query76 2258 984 1033 984
query77 378 265 256 256
query78 10280 9771 9737 9737
query79 1630 521 507 507
query80 1082 424 427 424
query81 486 219 218 218
query82 673 93 96 93
query83 193 166 167 166
query84 272 91 88 88
query85 1285 359 274 274
query86 395 296 316 296
query87 3286 3140 3108 3108
query88 3494 2349 2335 2335
query89 475 374 376 374
query90 2067 186 181 181
query91 124 98 100 98
query92 59 48 52 48
query93 1581 494 489 489
query94 1202 187 176 176
query95 412 314 309 309
query96 583 263 268 263
query97 3220 3082 3035 3035
query98 228 227 214 214
query99 1161 869 846 846
Total cold run time: 262189 ms
Total hot run time: 168342 ms
ClickBench: Total hot run time: 30.64 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 26c21f49e40044fe4878badb01e2218294e46c98, data reload: false
query1 0.03 0.03 0.04
query2 0.09 0.04 0.05
query3 0.23 0.06 0.05
query4 1.66 0.09 0.10
query5 0.49 0.48 0.50
query6 1.12 0.72 0.74
query7 0.02 0.02 0.02
query8 0.05 0.04 0.04
query9 0.53 0.49 0.50
query10 0.54 0.54 0.54
query11 0.15 0.11 0.12
query12 0.15 0.12 0.12
query13 0.59 0.60 0.59
query14 0.80 0.78 0.79
query15 0.83 0.80 0.80
query16 0.37 0.36 0.37
query17 0.98 0.96 0.96
query18 0.20 0.24 0.24
query19 1.84 1.70 1.73
query20 0.01 0.01 0.01
query21 15.48 0.69 0.67
query22 4.66 6.84 1.90
query23 18.30 1.36 1.29
query24 1.51 0.37 0.23
query25 0.14 0.09 0.08
query26 0.27 0.18 0.16
query27 0.07 0.08 0.07
query28 13.23 1.01 1.01
query29 13.14 3.35 3.27
query30 0.23 0.06 0.06
query31 2.86 0.38 0.38
query32 3.30 0.48 0.46
query33 2.88 2.93 2.92
query34 17.20 4.39 4.43
query35 4.52 4.53 4.54
query36 0.67 0.46 0.46
query37 0.18 0.16 0.16
query38 0.15 0.14 0.14
query39 0.05 0.04 0.03
query40 0.17 0.14 0.14
query41 0.08 0.05 0.04
query42 0.06 0.05 0.05
query43 0.04 0.03 0.03
Total cold run time: 109.87 s
Total hot run time: 30.64 s