doris icon indicating copy to clipboard operation
doris copied to clipboard

[improvement](mtmv) Improve the mv rewrite performance by optimize code usage

Open seawinde opened this issue 1 year ago • 11 comments

Proposed changes

Improve the performance from two points, one is optimize decide model method and another is to reuse the mv struc info:

  1. Instead of usejava.util.List#containsAllby java.util.Set#containsAll in method AbstractMaterializedViewRule#decideMatchMode
  2. Reuse the mv struct info in different query, because mv struct info is immobile. Notes: tableBitSet in struct info is relevant to the statementContext in cascadesContext, if reuse the mv struct info for different query, we should re generate table bitset and construct new struct info with method StructInfo#withTableBitSet

seawinde avatar May 30 '24 12:05 seawinde

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.

doris-robot avatar May 30 '24 12:05 doris-robot

run buildall

seawinde avatar May 30 '24 12:05 seawinde

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

doris-robot avatar May 30 '24 13:05 doris-robot

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

doris-robot avatar May 30 '24 13:05 doris-robot

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

doris-robot avatar May 30 '24 13:05 doris-robot

PR approved by at least one committer and no changes requested.

github-actions[bot] avatar May 31 '24 06:05 github-actions[bot]

PR approved by anyone and no changes requested.

github-actions[bot] avatar May 31 '24 06:05 github-actions[bot]

run buildall

seawinde avatar May 31 '24 06:05 seawinde

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

doris-robot avatar May 31 '24 07:05 doris-robot

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

doris-robot avatar May 31 '24 07:05 doris-robot

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

doris-robot avatar May 31 '24 07:05 doris-robot