Skip to content

Conversation

@suxiaogang223
Copy link
Contributor

@suxiaogang223 suxiaogang223 commented Dec 15, 2025

What problem does this PR solve?

Motivation

During Iceberg query planning, FE needs to read and parse the metadata chain: ManifestList → Manifest → DataFile/DeleteFile. When frequently querying hot partitions or executing small batch queries, the same Manifest files are repeatedly read and parsed, causing significant I/O and CPU overhead.

Solution

This PR introduces a manifest-level cache (IcebergManifestCache) in FE to cache the parsed DataFile/DeleteFile lists per manifest file. The cache is implemented using Caffeine with weight-based LRU eviction and TTL support.

Key Components

  • IcebergManifestCache: Core cache implementation using Caffeine

    • Weight-based LRU eviction controlled by iceberg.manifest.cache.capacity-mb
    • TTL expiration via iceberg.manifest.cache.ttl-second
    • Single-flight loading to prevent duplicate parsing of the same manifest
  • ManifestCacheKey: Cache key consisting of:

    • Manifest file path
  • ManifestCacheValue: Cached payload containing:

    • List of DataFile or DeleteFile
    • Estimated memory weight for eviction
  • IcebergManifestCacheLoader: Helper class to load and populate the cache using ManifestFiles.read()

Cache Invalidation Strategy

  • Key changes automatically invalidate stale entries (length/lastModified/sequenceNumber changes)
  • TTL prevents stale data when underlying storage doesn't support precise mtime/etag
  • Different snapshots use different manifest paths/keys, ensuring snapshot-level isolation

Iceberg Catalog Properties

Config Default Description
iceberg.manifest.cache.enable true Enable/disable manifest cache
iceberg.manifest.cache.capacity-mb 1024 Maximum cache capacity in MB
iceberg.manifest.cache.ttl-second 48 * 60 * 60 Cache entry expiration after access

Integration Point

The cache is integrated in IcebergScanNode.planFileScanTaskWithManifestCache(), which:

  1. Loads delete manifests via cache and builds DeleteFileIndex
  2. Loads data manifests via cache and creates FileScanTask for each data file
  3. Falls back to original scan if cache loading fails

Release note

None

Check List (For Author)

  • Test

    • Regression test
    • Unit Test
    • Manual test (add detailed scripts or steps below)
    • No need to test or manual test. Explain why:
      • This is a refactor/code format and no logic has been changed.
      • Previous test can cover this change.
      • No code files have been changed.
      • Other reason
  • Behavior changed:

    • No.
    • Yes.
  • Does this need documentation?

    • No.
    • Yes.

Check List (For Reviewer who merge this PR)

  • Confirm the release note
  • Confirm test cases
  • Confirm document
  • Add branch pick label

@hello-stephen
Copy link
Contributor

Thank you for your contribution to Apache Doris.
Don't know what should be done next? See How to process your PR.

Please clearly describe your PR:

  1. What problem was fixed (it's best to include specific error reporting information). How it was fixed.
  2. Which behaviors were modified. What was the previous behavior, what is it now, why was it modified, and what possible impacts might there be.
  3. What features were added. Why was this function added?
  4. Which code was refactored and why was this part of the code refactored?
  5. Which functions were optimized and what is the difference before and after the optimization?

@suxiaogang223 suxiaogang223 marked this pull request as draft December 15, 2025 16:30
@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 36570 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 5e3b21bb58846b99c97e4afae9476e73ec7d9eeb, data reload: false

------ Round 1 ----------------------------------
q1	17599	4366	4121	4121
q2	2044	360	233	233
q3	10173	1321	783	783
q4	10234	887	316	316
q5	7539	2042	2019	2019
q6	186	169	142	142
q7	1002	878	721	721
q8	9355	1472	1161	1161
q9	7010	5389	5396	5389
q10	6802	2398	1971	1971
q11	540	324	295	295
q12	684	742	591	591
q13	17791	3709	3067	3067
q14	290	311	275	275
q15	584	512	509	509
q16	705	690	633	633
q17	693	820	566	566
q18	7940	7692	7930	7692
q19	1144	1027	638	638
q20	448	373	251	251
q21	4698	4279	4162	4162
q22	1101	1059	1035	1035
Total cold run time: 108562 ms
Total hot run time: 36570 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4308	4416	4600	4416
q2	336	428	331	331
q3	2614	2815	2480	2480
q4	1505	1875	1374	1374
q5	4614	4513	4610	4513
q6	219	172	127	127
q7	2018	1971	1872	1872
q8	2676	2661	2648	2648
q9	7514	7564	7623	7564
q10	3051	3272	2905	2905
q11	603	522	494	494
q12	671	712	559	559
q13	3286	3614	3022	3022
q14	263	282	260	260
q15	534	493	490	490
q16	614	656	613	613
q17	1153	1323	1332	1323
q18	7493	7136	6990	6990
q19	832	828	851	828
q20	1915	1959	1833	1833
q21	4602	4333	4166	4166
q22	1132	1080	983	983
Total cold run time: 51953 ms
Total hot run time: 49791 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 180705 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 5e3b21bb58846b99c97e4afae9476e73ec7d9eeb, data reload: false

query5	5046	644	486	486
query6	355	240	221	221
query7	4223	481	281	281
query8	297	264	244	244
query9	8788	2555	2554	2554
query10	543	382	329	329
query11	15826	15132	14987	14987
query12	178	118	124	118
query13	1260	511	409	409
query14	6449	3370	3078	3078
query14_1	2946	2956	2941	2941
query15	212	201	186	186
query16	800	495	470	470
query17	1159	740	633	633
query18	2730	474	379	379
query19	241	237	215	215
query20	132	122	123	122
query21	225	148	121	121
query22	3956	4035	3892	3892
query23	16703	16143	16059	16059
query23_1	16103	16036	15939	15939
query24	7361	1707	1264	1264
query24_1	1248	1275	1294	1275
query25	604	515	460	460
query26	1256	276	172	172
query27	2748	497	327	327
query28	4422	2161	2156	2156
query29	837	600	492	492
query30	320	256	240	240
query31	826	699	633	633
query32	89	83	77	77
query33	572	371	311	311
query34	919	917	557	557
query35	803	850	739	739
query36	875	928	841	841
query37	128	99	82	82
query38	2896	2895	2865	2865
query39	781	780	719	719
query39_1	742	701	703	701
query40	229	144	132	132
query41	74	69	69	69
query42	111	111	106	106
query43	452	440	422	422
query44	1364	759	751	751
query45	202	198	192	192
query46	896	993	622	622
query47	1667	1702	1631	1631
query48	332	345	260	260
query49	660	468	419	419
query50	674	306	226	226
query51	3898	4047	3936	3936
query52	106	108	107	107
query53	329	354	297	297
query54	303	268	264	264
query55	81	75	76	75
query56	306	319	298	298
query57	1124	1164	1076	1076
query58	278	273	267	267
query59	2418	2534	2372	2372
query60	331	312	308	308
query61	161	157	156	156
query62	716	684	634	634
query63	335	308	309	308
query64	4918	1310	1006	1006
query65	4145	3980	4009	3980
query66	1450	453	318	318
query67	15168	15015	14709	14709
query68	8298	1010	729	729
query69	501	362	324	324
query70	1044	988	1020	988
query71	381	318	289	289
query72	6137	4945	4902	4902
query73	650	564	310	310
query74	8806	8978	8668	8668
query75	3303	3186	2862	2862
query76	4084	1196	775	775
query77	739	381	296	296
query78	9830	9923	9166	9166
query79	1981	864	618	618
query80	709	654	582	582
query81	512	285	248	248
query82	519	134	104	104
query83	299	261	246	246
query84	304	121	110	110
query85	965	517	466	466
query86	389	302	271	271
query87	3114	3004	2897	2897
query88	4123	2266	2294	2266
query89	474	425	390	390
query90	2192	163	154	154
query91	177	167	146	146
query92	84	71	77	71
query93	1941	933	569	569
query94	471	307	302	302
query95	571	389	302	302
query96	596	479	212	212
query97	2319	2295	2273	2273
query98	218	197	194	194
query99	1294	1313	1244	1244
Total cold run time: 265767 ms
Total hot run time: 180705 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 27.21 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 5e3b21bb58846b99c97e4afae9476e73ec7d9eeb, data reload: false

query1	0.05	0.05	0.05
query2	0.10	0.04	0.05
query3	0.26	0.09	0.09
query4	1.61	0.12	0.11
query5	0.28	0.25	0.28
query6	1.18	0.64	0.62
query7	0.03	0.02	0.02
query8	0.06	0.04	0.05
query9	0.56	0.52	0.50
query10	0.57	0.57	0.56
query11	0.16	0.10	0.11
query12	0.16	0.11	0.13
query13	0.61	0.60	0.62
query14	0.99	0.98	0.97
query15	0.84	0.80	0.82
query16	0.40	0.38	0.42
query17	1.06	1.03	1.05
query18	0.24	0.21	0.22
query19	1.95	1.85	1.86
query20	0.01	0.02	0.01
query21	15.44	0.28	0.14
query22	4.60	0.05	0.05
query23	15.96	0.27	0.10
query24	1.39	0.24	0.17
query25	0.07	0.07	0.08
query26	0.14	0.13	0.14
query27	0.07	0.05	0.05
query28	3.59	1.23	1.03
query29	12.63	4.02	3.21
query30	0.27	0.16	0.11
query31	2.81	0.63	0.40
query32	3.23	0.54	0.46
query33	3.00	3.08	3.01
query34	16.75	5.17	4.54
query35	4.54	4.56	4.61
query36	0.66	0.50	0.50
query37	0.10	0.06	0.06
query38	0.07	0.05	0.04
query39	0.05	0.03	0.03
query40	0.17	0.13	0.12
query41	0.09	0.04	0.03
query42	0.05	0.03	0.03
query43	0.04	0.04	0.03
Total cold run time: 96.84 s
Total hot run time: 27.21 s

@suxiaogang223
Copy link
Contributor Author

run buildall

@suxiaogang223 suxiaogang223 changed the title Manifest cache2 [Feature](iceberg) Add manifest-level cache for Iceberg tables to reduce I/O and parsing overhead Dec 15, 2025
@suxiaogang223 suxiaogang223 marked this pull request as ready for review December 15, 2025 17:18
@doris-robot
Copy link

TPC-H: Total hot run time: 36120 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 7d36f1053aa2e9cb7a03daa159c66d7e6a632472, data reload: false

------ Round 1 ----------------------------------
q1	17631	4263	4083	4083
q2	2029	357	241	241
q3	10171	1299	746	746
q4	10215	829	311	311
q5	7536	2159	1951	1951
q6	186	178	145	145
q7	1001	881	707	707
q8	9379	1486	1127	1127
q9	7033	5414	5348	5348
q10	6803	2425	1962	1962
q11	531	325	300	300
q12	650	761	582	582
q13	17781	3654	3022	3022
q14	291	299	286	286
q15	573	534	513	513
q16	716	680	623	623
q17	685	772	549	549
q18	7529	7556	8048	7556
q19	945	997	644	644
q20	441	394	270	270
q21	4519	4310	4096	4096
q22	1116	1128	1058	1058
Total cold run time: 107761 ms
Total hot run time: 36120 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4351	4271	4196	4196
q2	325	408	320	320
q3	2461	2832	2396	2396
q4	1447	1884	1426	1426
q5	4581	4497	4554	4497
q6	224	172	132	132
q7	2248	1925	1823	1823
q8	2619	2516	2496	2496
q9	7560	7547	7564	7547
q10	3037	3288	2859	2859
q11	595	550	504	504
q12	689	733	577	577
q13	3277	3610	3013	3013
q14	279	279	252	252
q15	539	496	485	485
q16	610	649	619	619
q17	1131	1413	1350	1350
q18	7328	7068	7106	7068
q19	832	794	819	794
q20	1954	1977	1810	1810
q21	4592	4312	4156	4156
q22	1082	1009	998	998
Total cold run time: 51761 ms
Total hot run time: 49318 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 178998 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 7d36f1053aa2e9cb7a03daa159c66d7e6a632472, data reload: false

query5	5895	644	474	474
query6	357	233	205	205
query7	4401	476	283	283
query8	312	255	236	236
query9	8797	2547	2588	2547
query10	518	394	327	327
query11	15308	14903	14601	14601
query12	178	117	114	114
query13	1256	493	400	400
query14	7732	3291	3005	3005
query14_1	2920	2935	2903	2903
query15	264	199	179	179
query16	874	476	508	476
query17	1308	713	623	623
query18	2712	444	358	358
query19	326	237	205	205
query20	127	115	119	115
query21	222	139	115	115
query22	3844	4027	3897	3897
query23	16865	16185	15944	15944
query23_1	16098	16301	16010	16010
query24	6884	1672	1221	1221
query24_1	1267	1243	1262	1243
query25	606	513	456	456
query26	1230	275	169	169
query27	2705	458	310	310
query28	4504	2181	2160	2160
query29	837	579	469	469
query30	316	251	218	218
query31	815	729	643	643
query32	86	74	76	74
query33	550	359	317	317
query34	886	908	560	560
query35	828	847	726	726
query36	869	904	851	851
query37	134	90	83	83
query38	2846	2874	2859	2859
query39	752	738	749	738
query39_1	701	715	703	703
query40	227	139	120	120
query41	69	62	62	62
query42	106	104	104	104
query43	423	452	402	402
query44	1322	746	749	746
query45	194	194	186	186
query46	880	993	606	606
query47	1665	1686	1624	1624
query48	313	322	258	258
query49	639	438	366	366
query50	656	289	232	232
query51	3853	3922	3798	3798
query52	111	114	105	105
query53	322	359	295	295
query54	300	266	256	256
query55	88	79	73	73
query56	311	304	314	304
query57	1143	1126	1073	1073
query58	269	271	255	255
query59	2450	2563	2436	2436
query60	314	320	303	303
query61	164	162	162	162
query62	706	681	621	621
query63	334	296	303	296
query64	4909	1337	1009	1009
query65	4034	4019	3967	3967
query66	1358	457	326	326
query67	15392	15051	14855	14855
query68	8448	1008	728	728
query69	525	356	317	317
query70	1116	1019	914	914
query71	403	304	295	295
query72	6105	5001	5031	5001
query73	669	586	307	307
query74	8792	8699	8598	8598
query75	3187	3160	2773	2773
query76	3985	1164	754	754
query77	567	402	307	307
query78	9344	9493	8865	8865
query79	1706	904	602	602
query80	715	666	574	574
query81	514	271	242	242
query82	472	139	104	104
query83	295	264	236	236
query84	301	123	105	105
query85	908	508	473	473
query86	336	303	303	303
query87	3032	3010	2987	2987
query88	4312	2306	2274	2274
query89	482	442	418	418
query90	2165	166	156	156
query91	172	167	148	148
query92	86	66	67	66
query93	2011	931	558	558
query94	488	299	264	264
query95	551	383	333	333
query96	604	482	213	213
query97	2345	2336	2238	2238
query98	215	199	191	191
query99	1343	1289	1219	1219
Total cold run time: 265418 ms
Total hot run time: 178998 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 27.32 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 7d36f1053aa2e9cb7a03daa159c66d7e6a632472, data reload: false

query1	0.05	0.05	0.04
query2	0.09	0.05	0.05
query3	0.25	0.10	0.09
query4	1.61	0.11	0.11
query5	0.29	0.25	0.25
query6	1.19	0.65	0.64
query7	0.03	0.02	0.02
query8	0.06	0.04	0.04
query9	0.57	0.51	0.49
query10	0.55	0.55	0.55
query11	0.16	0.10	0.12
query12	0.16	0.11	0.12
query13	0.63	0.60	0.61
query14	1.00	0.98	0.99
query15	0.84	0.79	0.80
query16	0.41	0.39	0.43
query17	1.00	1.06	1.08
query18	0.23	0.22	0.22
query19	1.89	1.79	1.84
query20	0.02	0.01	0.01
query21	15.47	0.28	0.14
query22	4.64	0.05	0.04
query23	15.96	0.29	0.10
query24	1.19	0.41	0.22
query25	0.07	0.06	0.05
query26	0.14	0.13	0.13
query27	0.08	0.05	0.05
query28	2.82	1.24	1.04
query29	12.56	4.04	3.31
query30	0.29	0.14	0.13
query31	2.83	0.64	0.40
query32	3.24	0.57	0.46
query33	3.06	3.01	3.20
query34	16.97	5.35	4.56
query35	4.55	4.51	4.53
query36	0.65	0.51	0.49
query37	0.11	0.07	0.07
query38	0.08	0.04	0.04
query39	0.04	0.02	0.03
query40	0.19	0.15	0.13
query41	0.09	0.04	0.03
query42	0.05	0.03	0.03
query43	0.05	0.03	0.03
Total cold run time: 96.16 s
Total hot run time: 27.32 s

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 14.17% (84/593) 🎉
Increment coverage report
Complete coverage report

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 22.43% (133/593) 🎉
Increment coverage report
Complete coverage report

@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 35151 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit effd259fed110f8c72d5c437b5fd54ad3408eece, data reload: false

------ Round 1 ----------------------------------
q1	17623	4299	4076	4076
q2	2035	353	248	248
q3	10157	1356	749	749
q4	10224	906	318	318
q5	7515	2161	1931	1931
q6	186	172	136	136
q7	1024	887	717	717
q8	9370	1466	1190	1190
q9	7180	5367	5389	5367
q10	6814	2387	1979	1979
q11	542	325	294	294
q12	689	733	576	576
q13	17778	3716	3085	3085
q14	284	313	277	277
q15	597	526	516	516
q16	691	660	618	618
q17	689	831	514	514
q18	7528	7189	7063	7063
q19	1108	968	622	622
q20	412	363	256	256
q21	4239	3981	3643	3643
q22	1071	1004	976	976
Total cold run time: 107756 ms
Total hot run time: 35151 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4111	4048	4058	4048
q2	333	395	315	315
q3	2185	2666	2305	2305
q4	1393	1751	1321	1321
q5	4258	4659	4704	4659
q6	227	169	129	129
q7	2103	1943	1803	1803
q8	2719	2633	2598	2598
q9	7545	7621	7530	7530
q10	3076	3232	2828	2828
q11	585	506	486	486
q12	800	837	603	603
q13	3534	3991	3454	3454
q14	310	295	298	295
q15	541	512	508	508
q16	651	730	620	620
q17	1175	1501	1440	1440
q18	8035	7607	7474	7474
q19	895	911	874	874
q20	1876	1983	1797	1797
q21	4609	4300	4155	4155
q22	1118	1022	974	974
Total cold run time: 52079 ms
Total hot run time: 50216 ms

@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 35385 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 7536caa3554257c0ad16c2bddf9572d01bc82526, data reload: false

------ Round 1 ----------------------------------
q1	17621	4173	4071	4071
q2	2041	360	237	237
q3	10155	1320	735	735
q4	10230	855	315	315
q5	7529	2159	1907	1907
q6	188	169	138	138
q7	994	863	704	704
q8	9360	1455	1178	1178
q9	7085	5356	5407	5356
q10	6766	2378	1975	1975
q11	520	330	293	293
q12	641	710	594	594
q13	17792	3679	2999	2999
q14	291	297	264	264
q15	594	526	526	526
q16	706	679	611	611
q17	701	850	517	517
q18	7458	7158	7176	7158
q19	1099	978	634	634
q20	409	366	250	250
q21	4207	4059	3959	3959
q22	1055	1006	964	964
Total cold run time: 107442 ms
Total hot run time: 35385 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4072	4045	4075	4045
q2	329	408	323	323
q3	2115	2662	2306	2306
q4	1338	1748	1295	1295
q5	4243	4622	4762	4622
q6	230	184	135	135
q7	2064	1994	1860	1860
q8	2713	2571	2520	2520
q9	7641	7512	7556	7512
q10	3090	3245	2803	2803
q11	598	494	496	494
q12	719	780	577	577
q13	3537	3995	3293	3293
q14	305	295	294	294
q15	560	506	524	506
q16	649	680	636	636
q17	1192	1508	1594	1508
q18	8242	7553	7571	7553
q19	918	887	858	858
q20	1976	2030	1981	1981
q21	4927	4451	4261	4261
q22	1092	1045	995	995
Total cold run time: 52550 ms
Total hot run time: 50377 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 178544 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 7536caa3554257c0ad16c2bddf9572d01bc82526, data reload: false

query5	4584	592	455	455
query6	320	242	208	208
query7	4241	451	270	270
query8	305	253	240	240
query9	8769	2534	2546	2534
query10	497	383	323	323
query11	15379	14784	14588	14588
query12	174	116	118	116
query13	1266	481	391	391
query14	6077	2968	2746	2746
query14_1	2633	2631	2640	2631
query15	217	200	180	180
query16	862	477	442	442
query17	1164	726	597	597
query18	2453	450	352	352
query19	245	235	218	218
query20	126	118	117	117
query21	221	140	119	119
query22	4010	3887	3981	3887
query23	16666	16218	16071	16071
query23_1	16186	16061	16026	16026
query24	7385	1642	1262	1262
query24_1	1252	1259	1253	1253
query25	581	518	445	445
query26	1303	270	162	162
query27	2757	464	308	308
query28	4437	2138	2128	2128
query29	809	554	440	440
query30	316	245	215	215
query31	842	700	630	630
query32	77	68	76	68
query33	545	343	290	290
query34	925	921	560	560
query35	783	808	722	722
query36	854	910	843	843
query37	128	94	79	79
query38	2856	2807	2849	2807
query39	800	748	719	719
query39_1	701	698	708	698
query40	230	137	120	120
query41	66	62	63	62
query42	111	107	108	107
query43	435	455	387	387
query44	1328	754	745	745
query45	195	187	187	187
query46	890	981	612	612
query47	1686	1668	1609	1609
query48	336	337	258	258
query49	620	432	359	359
query50	689	301	228	228
query51	3826	3912	3890	3890
query52	107	109	99	99
query53	311	341	288	288
query54	282	254	252	252
query55	76	75	71	71
query56	301	295	300	295
query57	1150	1163	1076	1076
query58	278	249	248	248
query59	2336	2554	2334	2334
query60	331	311	299	299
query61	162	158	163	158
query62	689	659	632	632
query63	323	295	300	295
query64	5022	1313	1015	1015
query65	4021	3939	3943	3939
query66	1479	440	314	314
query67	15272	14919	15025	14919
query68	4979	1025	726	726
query69	495	345	316	316
query70	1076	1002	989	989
query71	365	299	278	278
query72	6079	5110	5137	5110
query73	710	652	311	311
query74	8525	8897	8544	8544
query75	3212	3159	2813	2813
query76	3882	1119	731	731
query77	524	381	289	289
query78	9422	9440	8757	8757
query79	1873	880	637	637
query80	1532	652	558	558
query81	570	272	238	238
query82	401	134	101	101
query83	351	248	235	235
query84	264	113	111	111
query85	976	540	458	458
query86	474	293	289	289
query87	3000	3021	2894	2894
query88	3259	2275	2287	2275
query89	465	425	392	392
query90	2049	165	162	162
query91	183	164	151	151
query92	74	74	65	65
query93	1394	920	571	571
query94	543	304	280	280
query95	579	321	355	321
query96	587	463	225	225
query97	2355	2326	2203	2203
query98	205	195	199	195
query99	1320	1300	1240	1240
Total cold run time: 258126 ms
Total hot run time: 178544 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 27.24 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 7536caa3554257c0ad16c2bddf9572d01bc82526, data reload: false

query1	0.05	0.05	0.05
query2	0.10	0.05	0.05
query3	0.26	0.09	0.09
query4	1.61	0.12	0.11
query5	0.28	0.26	0.25
query6	1.16	0.64	0.63
query7	0.03	0.02	0.03
query8	0.06	0.04	0.04
query9	0.57	0.51	0.51
query10	0.55	0.56	0.55
query11	0.15	0.11	0.10
query12	0.15	0.11	0.12
query13	0.62	0.59	0.61
query14	0.97	0.99	1.00
query15	0.81	0.78	0.80
query16	0.38	0.40	0.41
query17	1.00	1.09	1.05
query18	0.23	0.22	0.22
query19	1.93	1.85	1.72
query20	0.01	0.01	0.01
query21	15.44	0.30	0.15
query22	4.84	0.05	0.05
query23	16.04	0.28	0.10
query24	1.98	0.25	0.29
query25	0.11	0.12	0.04
query26	0.14	0.12	0.12
query27	0.05	0.09	0.05
query28	3.73	1.21	1.03
query29	12.60	4.03	3.22
query30	0.28	0.15	0.12
query31	2.82	0.63	0.39
query32	3.23	0.55	0.45
query33	3.05	3.09	3.02
query34	17.00	5.11	4.57
query35	4.55	4.57	4.59
query36	0.68	0.50	0.48
query37	0.10	0.07	0.07
query38	0.06	0.04	0.04
query39	0.05	0.03	0.03
query40	0.16	0.14	0.14
query41	0.09	0.04	0.03
query42	0.05	0.02	0.03
query43	0.05	0.03	0.03
Total cold run time: 98.02 s
Total hot run time: 27.24 s

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 21.96% (128/583) 🎉
Increment coverage report
Complete coverage report

@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 34962 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 53318e79d7e318095c8a94cf0a410b47e02c91cf, data reload: false

------ Round 1 ----------------------------------
q1	17643	4266	4071	4071
q2	2035	356	239	239
q3	10185	1325	727	727
q4	10217	857	310	310
q5	7518	2152	1942	1942
q6	186	169	140	140
q7	1011	856	714	714
q8	9362	1411	1174	1174
q9	7024	5374	5271	5271
q10	6839	2411	2021	2021
q11	540	329	291	291
q12	660	727	571	571
q13	17793	3685	3032	3032
q14	319	292	269	269
q15	597	530	517	517
q16	679	684	640	640
q17	727	815	509	509
q18	7938	7191	7110	7110
q19	1186	979	610	610
q20	400	361	246	246
q21	4163	4045	3595	3595
q22	1058	1007	963	963
Total cold run time: 108080 ms
Total hot run time: 34962 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4109	4036	4014	4014
q2	329	403	323	323
q3	2137	2673	2304	2304
q4	1344	1745	1277	1277
q5	4254	4650	4640	4640
q6	241	184	128	128
q7	2085	1916	1867	1867
q8	2757	2524	2449	2449
q9	7573	7581	7715	7581
q10	3080	3398	2849	2849
q11	619	554	496	496
q12	672	940	656	656
q13	3743	4324	3267	3267
q14	302	304	277	277
q15	553	508	529	508
q16	679	746	638	638
q17	1219	1464	1443	1443
q18	7834	7778	7422	7422
q19	872	832	851	832
q20	1990	2170	1858	1858
q21	4666	4294	4163	4163
q22	1068	1011	976	976
Total cold run time: 52126 ms
Total hot run time: 49968 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 178232 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 53318e79d7e318095c8a94cf0a410b47e02c91cf, data reload: false

query5	4631	584	451	451
query6	324	227	208	208
query7	4213	462	277	277
query8	317	253	234	234
query9	8753	2530	2538	2530
query10	469	377	330	330
query11	15338	14926	14652	14652
query12	188	120	118	118
query13	1273	518	398	398
query14	5646	2991	2761	2761
query14_1	2657	2660	2660	2660
query15	213	193	179	179
query16	852	444	432	432
query17	1101	702	563	563
query18	2426	427	340	340
query19	230	257	200	200
query20	116	115	112	112
query21	215	138	115	115
query22	3894	3991	3823	3823
query23	16546	16079	16020	16020
query23_1	16056	15991	16035	15991
query24	7343	1639	1249	1249
query24_1	1228	1213	1232	1213
query25	553	472	421	421
query26	1253	269	156	156
query27	2777	453	311	311
query28	4489	2143	2163	2143
query29	842	591	472	472
query30	318	247	219	219
query31	818	689	640	640
query32	80	71	78	71
query33	545	349	296	296
query34	899	914	539	539
query35	793	838	734	734
query36	848	905	835	835
query37	134	98	82	82
query38	2922	2919	2831	2831
query39	755	747	723	723
query39_1	708	695	692	692
query40	228	139	130	130
query41	69	69	68	68
query42	109	107	114	107
query43	446	436	394	394
query44	1346	756	745	745
query45	194	190	187	187
query46	880	980	617	617
query47	1632	1695	1621	1621
query48	323	329	252	252
query49	651	449	388	388
query50	667	297	239	239
query51	3874	3880	3765	3765
query52	117	113	109	109
query53	325	361	291	291
query54	299	265	266	265
query55	79	84	74	74
query56	310	312	322	312
query57	1153	1137	1108	1108
query58	295	268	262	262
query59	2400	2480	2398	2398
query60	325	329	315	315
query61	187	180	183	180
query62	736	691	627	627
query63	331	349	304	304
query64	5041	1301	1010	1010
query65	3979	3941	3939	3939
query66	1459	442	313	313
query67	15110	14960	14735	14735
query68	8405	987	735	735
query69	482	338	308	308
query70	1088	965	948	948
query71	396	294	283	283
query72	6130	4987	5196	4987
query73	728	653	313	313
query74	8784	8792	8680	8680
query75	3235	3154	2781	2781
query76	4015	1131	738	738
query77	610	416	291	291
query78	9395	9389	8844	8844
query79	1704	863	605	605
query80	679	654	558	558
query81	528	270	242	242
query82	505	134	107	107
query83	299	254	246	246
query84	313	112	99	99
query85	976	506	468	468
query86	387	297	289	289
query87	3015	3145	2918	2918
query88	4244	2249	2277	2249
query89	460	419	398	398
query90	2102	152	160	152
query91	178	175	145	145
query92	78	67	65	65
query93	1827	907	559	559
query94	488	272	279	272
query95	581	376	307	307
query96	593	483	213	213
query97	2269	2313	2212	2212
query98	222	195	199	195
query99	1353	1278	1199	1199
Total cold run time: 261857 ms
Total hot run time: 178232 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 27.41 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 53318e79d7e318095c8a94cf0a410b47e02c91cf, data reload: false

query1	0.06	0.05	0.05
query2	0.10	0.05	0.04
query3	0.25	0.09	0.08
query4	1.61	0.12	0.11
query5	0.29	0.25	0.25
query6	1.14	0.64	0.63
query7	0.04	0.02	0.03
query8	0.05	0.04	0.04
query9	0.59	0.52	0.51
query10	0.56	0.55	0.56
query11	0.15	0.11	0.11
query12	0.15	0.12	0.11
query13	0.63	0.60	0.60
query14	0.99	0.99	0.98
query15	0.82	0.79	0.79
query16	0.43	0.39	0.40
query17	1.06	1.04	1.04
query18	0.23	0.22	0.21
query19	1.87	1.79	1.77
query20	0.02	0.02	0.01
query21	15.44	0.32	0.14
query22	4.88	0.06	0.04
query23	16.24	0.28	0.11
query24	0.94	0.23	0.44
query25	0.09	0.06	0.05
query26	0.14	0.14	0.14
query27	0.08	0.06	0.07
query28	3.62	1.22	1.03
query29	12.58	4.05	3.34
query30	0.28	0.14	0.11
query31	2.81	0.62	0.38
query32	3.24	0.54	0.47
query33	3.00	3.07	3.08
query34	16.69	5.25	4.52
query35	4.53	4.60	4.58
query36	0.66	0.50	0.49
query37	0.11	0.07	0.07
query38	0.08	0.04	0.04
query39	0.05	0.03	0.03
query40	0.17	0.14	0.13
query41	0.09	0.03	0.03
query42	0.04	0.03	0.03
query43	0.04	0.03	0.04
Total cold run time: 96.84 s
Total hot run time: 27.41 s

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 27.57% (185/671) 🎉
Increment coverage report
Complete coverage report

@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 35242 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 3bddb352bf633d60a58cb34795c72cd76fe08e2b, data reload: false

------ Round 1 ----------------------------------
q1	17630	4329	4171	4171
q2	2001	354	247	247
q3	10201	1330	753	753
q4	10206	809	322	322
q5	7538	2128	1964	1964
q6	189	167	136	136
q7	1014	862	709	709
q8	9360	1503	1210	1210
q9	7008	5294	5428	5294
q10	6850	2382	1956	1956
q11	503	330	301	301
q12	649	717	563	563
q13	17763	3676	3045	3045
q14	292	307	271	271
q15	596	521	509	509
q16	712	685	623	623
q17	686	835	569	569
q18	7748	7072	6893	6893
q19	1088	1095	637	637
q20	384	363	254	254
q21	4192	3977	3846	3846
q22	1053	1000	969	969
Total cold run time: 107663 ms
Total hot run time: 35242 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4180	4136	4099	4099
q2	329	403	340	340
q3	2120	2668	2289	2289
q4	1328	1760	1300	1300
q5	4204	4602	4650	4602
q6	237	188	140	140
q7	2056	2002	1775	1775
q8	2770	2599	2513	2513
q9	7528	7428	7430	7428
q10	3109	3184	2849	2849
q11	586	533	502	502
q12	670	807	730	730
q13	3655	4044	3439	3439
q14	295	333	295	295
q15	567	533	623	533
q16	654	676	677	676
q17	1229	1391	1374	1374
q18	7927	7537	7413	7413
q19	903	869	897	869
q20	2083	2180	1879	1879
q21	4935	4448	4333	4333
q22	1070	1036	1000	1000
Total cold run time: 52435 ms
Total hot run time: 50378 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 178687 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 3bddb352bf633d60a58cb34795c72cd76fe08e2b, data reload: false

query5	4845	614	451	451
query6	328	229	208	208
query7	4204	464	271	271
query8	313	245	227	227
query9	8782	2496	2517	2496
query10	532	381	344	344
query11	15422	14871	14630	14630
query12	172	118	111	111
query13	1274	513	398	398
query14	5762	3027	2789	2789
query14_1	2706	2687	2686	2686
query15	213	202	179	179
query16	871	426	442	426
query17	1096	685	591	591
query18	2415	433	332	332
query19	221	225	204	204
query20	116	114	110	110
query21	220	137	117	117
query22	4096	3885	3828	3828
query23	16522	16214	15986	15986
query23_1	16045	16064	15939	15939
query24	7410	1652	1232	1232
query24_1	1240	1263	1236	1236
query25	564	487	428	428
query26	1235	266	161	161
query27	2766	456	321	321
query28	4512	2157	2108	2108
query29	812	548	442	442
query30	320	246	208	208
query31	837	734	580	580
query32	80	73	72	72
query33	536	327	291	291
query34	919	927	562	562
query35	788	837	742	742
query36	870	908	840	840
query37	128	96	75	75
query38	2871	2892	2861	2861
query39	744	730	716	716
query39_1	691	721	694	694
query40	227	137	121	121
query41	68	63	63	63
query42	115	106	106	106
query43	427	447	410	410
query44	1371	761	755	755
query45	194	190	184	184
query46	914	992	613	613
query47	1660	1657	1601	1601
query48	310	325	251	251
query49	625	451	353	353
query50	679	294	223	223
query51	3893	3800	3766	3766
query52	104	115	105	105
query53	323	353	304	304
query54	304	259	245	245
query55	80	78	74	74
query56	289	305	302	302
query57	1144	1143	1076	1076
query58	295	254	252	252
query59	2299	2491	2422	2422
query60	327	320	309	309
query61	191	189	181	181
query62	726	689	645	645
query63	334	297	307	297
query64	5188	1450	1129	1129
query65	4000	3982	3963	3963
query66	1498	467	340	340
query67	15236	14909	14678	14678
query68	5181	1043	737	737
query69	518	361	325	325
query70	1117	977	1030	977
query71	366	313	286	286
query72	6228	4968	5087	4968
query73	700	673	309	309
query74	8737	8781	8523	8523
query75	3201	3143	2870	2870
query76	3916	1151	756	756
query77	529	405	302	302
query78	9521	9385	8873	8873
query79	1857	881	629	629
query80	738	662	574	574
query81	515	265	232	232
query82	465	133	102	102
query83	257	250	238	238
query84	256	122	107	107
query85	982	518	469	469
query86	390	311	308	308
query87	3062	3023	3069	3023
query88	4418	2272	2315	2272
query89	473	440	398	398
query90	2121	165	158	158
query91	170	172	172	172
query92	85	68	66	66
query93	2035	913	567	567
query94	493	314	266	266
query95	586	379	312	312
query96	595	486	221	221
query97	2254	2317	2214	2214
query98	219	203	191	191
query99	1307	1266	1204	1204
Total cold run time: 260910 ms
Total hot run time: 178687 ms

@suxiaogang223
Copy link
Contributor Author

run external

@suxiaogang223
Copy link
Contributor Author

run buildall

@doris-robot
Copy link

TPC-H: Total hot run time: 36088 ms
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/tpch-tools
Tpch sf100 test result on commit 36363202ada0afdaca5bfaba4d0c16d6212074a7, data reload: false

------ Round 1 ----------------------------------
q1	17625	4204	4092	4092
q2	2060	348	242	242
q3	10139	1336	755	755
q4	10230	881	322	322
q5	7549	2074	1983	1983
q6	181	167	135	135
q7	1013	847	708	708
q8	9372	1419	1165	1165
q9	6970	5332	5391	5332
q10	6808	2408	1990	1990
q11	534	338	321	321
q12	646	724	583	583
q13	17783	3651	3010	3010
q14	279	298	267	267
q15	583	520	522	520
q16	690	676	635	635
q17	683	799	540	540
q18	7320	7552	8016	7552
q19	1050	1013	655	655
q20	440	396	257	257
q21	4513	4477	3997	3997
q22	1091	1073	1027	1027
Total cold run time: 107559 ms
Total hot run time: 36088 ms

----- Round 2, with runtime_filter_mode=off -----
q1	4325	4342	4222	4222
q2	340	404	311	311
q3	2421	2871	2483	2483
q4	1385	1865	1394	1394
q5	4806	4333	4629	4333
q6	264	170	128	128
q7	2028	1923	1821	1821
q8	2669	2465	2538	2465
q9	7544	7583	7528	7528
q10	3084	3282	2935	2935
q11	635	567	522	522
q12	711	704	563	563
q13	3333	3625	3040	3040
q14	273	275	266	266
q15	543	503	486	486
q16	618	666	609	609
q17	1098	1408	1382	1382
q18	7457	7056	7044	7044
q19	834	799	803	799
q20	1903	1970	1860	1860
q21	4649	4335	4190	4190
q22	1098	1037	991	991
Total cold run time: 52018 ms
Total hot run time: 49372 ms

@doris-robot
Copy link

TPC-DS: Total hot run time: 179920 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 36363202ada0afdaca5bfaba4d0c16d6212074a7, data reload: false

query5	5870	601	459	459
query6	346	238	221	221
query7	4366	460	269	269
query8	336	258	244	244
query9	8784	2540	2531	2531
query10	537	395	332	332
query11	15653	14913	15123	14913
query12	181	126	119	119
query13	1265	499	394	394
query14	7728	3007	2782	2782
query14_1	2684	2662	2706	2662
query15	264	196	185	185
query16	922	463	398	398
query17	1301	729	612	612
query18	2728	447	351	351
query19	285	235	218	218
query20	125	116	118	116
query21	227	148	120	120
query22	3861	4166	3926	3926
query23	16724	16159	16092	16092
query23_1	16130	16118	16138	16118
query24	6923	1656	1262	1262
query24_1	1254	1236	1266	1236
query25	591	528	452	452
query26	1241	281	167	167
query27	2714	463	332	332
query28	4472	2138	2122	2122
query29	844	567	474	474
query30	329	246	218	218
query31	801	693	612	612
query32	86	73	71	71
query33	540	352	295	295
query34	883	895	542	542
query35	833	799	710	710
query36	873	931	818	818
query37	135	97	75	75
query38	2996	3133	3007	3007
query39	769	753	753	753
query39_1	690	696	708	696
query40	227	139	123	123
query41	66	62	66	62
query42	110	106	106	106
query43	436	454	407	407
query44	1327	749	734	734
query45	193	193	183	183
query46	872	976	604	604
query47	1673	1714	1646	1646
query48	316	348	257	257
query49	636	453	358	358
query50	659	301	222	222
query51	3877	3823	3859	3823
query52	111	113	104	104
query53	324	367	304	304
query54	297	270	255	255
query55	79	78	72	72
query56	292	318	316	316
query57	1157	1163	1079	1079
query58	284	265	250	250
query59	2333	2565	2372	2372
query60	313	321	293	293
query61	163	158	157	157
query62	757	709	693	693
query63	336	299	331	299
query64	4913	1328	1018	1018
query65	4024	3944	3958	3944
query66	1363	440	315	315
query67	15295	14803	14856	14803
query68	7444	981	714	714
query69	502	348	312	312
query70	1067	1008	950	950
query71	381	311	280	280
query72	6051	5045	5127	5045
query73	712	670	306	306
query74	9037	8909	8792	8792
query75	3222	3183	2824	2824
query76	3768	1162	754	754
query77	535	394	322	322
query78	9452	9485	8803	8803
query79	1782	890	613	613
query80	786	646	552	552
query81	524	268	236	236
query82	407	134	107	107
query83	282	262	250	250
query84	266	124	125	124
query85	921	525	485	485
query86	350	320	284	284
query87	3224	3331	3205	3205
query88	3774	2298	2273	2273
query89	478	432	407	407
query90	2299	164	166	164
query91	170	171	140	140
query92	93	75	68	68
query93	2541	912	548	548
query94	491	309	286	286
query95	558	378	303	303
query96	589	503	221	221
query97	2260	2277	2222	2222
query98	215	198	198	198
query99	1317	1365	1290	1290
Total cold run time: 265004 ms
Total hot run time: 179920 ms

@doris-robot
Copy link

ClickBench: Total hot run time: 27.17 s
machine: 'aliyun_ecs.c7a.8xlarge_32C64G'
scripts: https://github.com/apache/doris/tree/master/tools/clickbench-tools
ClickBench test result on commit 36363202ada0afdaca5bfaba4d0c16d6212074a7, data reload: false

query1	0.05	0.05	0.05
query2	0.11	0.05	0.04
query3	0.26	0.08	0.08
query4	1.61	0.11	0.11
query5	0.27	0.25	0.25
query6	1.16	0.64	0.63
query7	0.03	0.02	0.02
query8	0.05	0.04	0.04
query9	0.57	0.50	0.51
query10	0.55	0.56	0.55
query11	0.15	0.10	0.11
query12	0.14	0.11	0.12
query13	0.61	0.60	0.60
query14	0.97	1.00	0.98
query15	0.82	0.80	0.81
query16	0.40	0.38	0.39
query17	0.99	1.01	1.05
query18	0.24	0.22	0.22
query19	1.96	1.83	1.83
query20	0.02	0.01	0.01
query21	15.46	0.29	0.15
query22	4.66	0.05	0.05
query23	16.01	0.30	0.11
query24	1.61	0.71	0.22
query25	0.09	0.07	0.06
query26	0.15	0.13	0.14
query27	0.08	0.05	0.06
query28	4.11	1.23	1.02
query29	12.63	4.04	3.18
query30	0.28	0.14	0.11
query31	2.81	0.64	0.40
query32	3.23	0.53	0.46
query33	3.02	2.99	3.02
query34	16.76	5.26	4.52
query35	4.64	4.61	4.57
query36	0.66	0.50	0.50
query37	0.11	0.06	0.06
query38	0.08	0.05	0.03
query39	0.05	0.03	0.03
query40	0.17	0.14	0.13
query41	0.08	0.04	0.03
query42	0.05	0.03	0.03
query43	0.05	0.04	0.03
Total cold run time: 97.75 s
Total hot run time: 27.17 s

@hello-stephen
Copy link
Contributor

FE UT Coverage Report

Increment line coverage 9.93% (72/725) 🎉
Increment coverage report
Complete coverage report

@hello-stephen
Copy link
Contributor

FE Regression Coverage Report

Increment line coverage 0.00% (0/725) 🎉
Increment coverage report
Complete coverage report

@github-actions
Copy link
Contributor

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

@github-actions github-actions bot added the approved Indicates a PR has been approved by one committer. label Dec 26, 2025
@github-actions
Copy link
Contributor

PR approved by anyone and no changes requested.

Copy link
Contributor

@kaka11chen kaka11chen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@morningman morningman merged commit e3e0590 into apache:master Dec 26, 2025
30 of 31 checks passed
github-actions bot pushed a commit that referenced this pull request Dec 26, 2025
…uce I/O and parsing overhead (#59056)

### What problem does this PR solve?

## Motivation

During Iceberg query planning, FE needs to read and parse the metadata
chain: ManifestList → Manifest → DataFile/DeleteFile. When frequently
querying hot partitions or executing small batch queries, the same
Manifest files are repeatedly read and parsed, causing significant I/O
and CPU overhead.

## Solution

This PR introduces a manifest-level cache (`IcebergManifestCache`) in FE
to cache the parsed DataFile/DeleteFile lists per manifest file. The
cache is implemented using Caffeine with weight-based LRU eviction and
TTL support.

### Key Components

- **IcebergManifestCache**: Core cache implementation using Caffeine
- Weight-based LRU eviction controlled by
`iceberg.manifest.cache.capacity-mb`
  - TTL expiration via `iceberg.manifest.cache.ttl-second`
- Single-flight loading to prevent duplicate parsing of the same
manifest

- **ManifestCacheKey**: Cache key consisting of:
  - Manifest file path

- **ManifestCacheValue**: Cached payload containing:
  - List of `DataFile` or `DeleteFile`
  - Estimated memory weight for eviction

- **IcebergManifestCacheLoader**: Helper class to load and populate the
cache using `ManifestFiles.read()`

### Cache Invalidation Strategy

- Key changes automatically invalidate stale entries
(length/lastModified/sequenceNumber changes)
- TTL prevents stale data when underlying storage doesn't support
precise mtime/etag
- Different snapshots use different manifest paths/keys, ensuring
snapshot-level isolation

### Iceberg Catalog Properties

| Config | Default | Description |
|--------|---------|-------------|
| `iceberg.manifest.cache.enable` | `true` | Enable/disable manifest
cache |
| `iceberg.manifest.cache.capacity-mb` | `1024` | Maximum cache capacity
in MB |
| `iceberg.manifest.cache.ttl-second` | `48 * 60 * 60` | Cache entry
expiration after access |

### Integration Point

The cache is integrated in
`IcebergScanNode.planFileScanTaskWithManifestCache()`, which:
1. Loads delete manifests via cache and builds `DeleteFileIndex`
2. Loads data manifests via cache and creates `FileScanTask` for each
data file
3. Falls back to original scan if cache loading fails
yiguolei pushed a commit that referenced this pull request Jan 7, 2026
…ables to reduce I/O and parsing overhead #59056 (#59408)

Cherry-picked from #59056

Co-authored-by: Socrates <suyiteng@selectdb.com>
@suxiaogang223 suxiaogang223 deleted the manifest_cache2 branch January 17, 2026 16:00
morningman pushed a commit that referenced this pull request Jan 19, 2026
github-actions bot pushed a commit that referenced this pull request Jan 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by one committer. dev/4.0.3-merged reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants