[{"data":1,"prerenderedAt":2517},["ShallowReactive",2],{"content-\u002Fplugins\u002Faio-starrocks\u002Faio-starrocks-query-tuning":3,"children-\u002Fplugins\u002Faio-starrocks\u002Faio-starrocks-query-tuning":2516,"twin-\u002Fplugins\u002Faio-starrocks\u002Faio-starrocks-query-tuning":2511},{"id":4,"title":5,"author":6,"body":7,"budget_tier":6,"build_tags":6,"created":6,"description":2507,"document_type":2508,"extension":2509,"game":6,"install":36,"investment_tier":6,"league":6,"meta":2510,"navigation":2511,"patch":6,"path":2512,"plugin":24,"profit_per_hour":6,"ratings":6,"seo":2513,"skills_count":6,"status":6,"stem":2514,"strategy_tier":6,"tags":6,"updated":6,"version":6,"weight":6,"__hash__":2515},"content\u002Fplugins\u002Faio-starrocks\u002Faio-starrocks-query-tuning.md","aio-starrocks-query-tuning",null,{"type":8,"value":9,"toc":2440},"minimark",[10,37,42,52,57,79,82,86,89,130,132,136,141,227,237,241,248,268,272,310,314,334,336,340,344,350,354,357,363,367,370,376,380,476,480,486,495,497,501,505,511,516,537,542,559,562,568,574,578,592,602,608,610,614,618,646,650,655,692,697,728,732,736,754,758,779,783,787,804,808,829,833,837,851,855,861,869,873,877,889,893,913,917,967,971,977,979,983,987,1047,1051,1094,1100,1104,1110,1117,1121,1124,1138,1142,1161,1165,1170,1201,1205,1211,1222,1226,1232,1243,1247,1250,1261,1265,1320,1326,1328,1332,1336,1339,1345,1350,1356,1361,1365,1368,1374,1379,1383,1386,1392,1401,1406,1412,1414,1418,1422,1459,1463,1466,1472,1483,1487,1581,1585,1590,1598,1641,1650,1676,1680,1869,1874,1888,1892,1895,1903,1907,1967,1973,1977,2013,2018,2026,2030,2089,2093,2187,2191,2264,2268,2314,2318,2321,2324,2328,2411,2415,2418,2426,2430,2433,2438],[11,12,13],"blockquote",{},[14,15,16,17,25,26,25,30,33,34],"p",{},"From plugin ",[18,19,21],"a",{"href":20},"\u002Fplugins\u002Faio-starrocks",[22,23,24],"strong",{},"aio-starrocks"," · ",[27,28,29],"code",{},"v1.0.2",[22,31,32],{},"Install:"," ",[27,35,36],{},"\u002Fplugin install aio-starrocks@aiocean-plugins",[38,39,41],"h1",{"id":40},"starrocks-query-tuning","StarRocks Query Tuning",[14,43,44,45,51],{},"Complete reference from ",[18,46,50],{"href":47,"rel":48},"https:\u002F\u002Fdocs.starrocks.io\u002Fdocs\u002Fbest_practices\u002Fquery_tuning\u002Fquery_plan_intro\u002F",[49],"nofollow","docs.starrocks.io\u002Fdocs\u002Fbest_practices\u002Fquery_tuning\u002F",".",[53,54,56],"h2",{"id":55},"related-skills","Related Skills",[58,59,60,67,73],"ul",{},[61,62,63,66],"li",{},[27,64,65],{},"\u002Faio-starrocks-best-practices"," — Table design: partitioning, bucketing, sort keys, PK tuning",[61,68,69,72],{},[27,70,71],{},"\u002Fstarrocks"," — Query syntax, cluster connections, Grafana integration",[61,74,75,78],{},[27,76,77],{},"\u002Fstarrocks-expert"," — General table types, data loading, materialized views",[80,81],"hr",{},[53,83,85],{"id":84},"_1-tuning-methodology-top-down-diagnostic","1. Tuning Methodology — Top-Down Diagnostic",[14,87,88],{},"Five-step process, always in order:",[90,91,92,98,112,118,124],"ol",{},[61,93,94,97],{},[22,95,96],{},"Identify"," — Use monitoring, query history, audit logs to detect slow queries or resource bottlenecks",[61,99,100,103,104,107,108,111],{},[22,101,102],{},"Collect & Analyze"," — ",[27,105,106],{},"EXPLAIN"," \u002F ",[27,109,110],{},"EXPLAIN ANALYZE"," + Query Profile for detailed metrics",[61,113,114,117],{},[22,115,116],{},"Locate Root Cause"," — Pinpoint problematic operators: join order, missing indexes, data distribution, SQL inefficiencies",[61,119,120,123],{},[22,121,122],{},"Apply Tuning"," — SQL rewriting, schema optimization, query hints, session variables",[61,125,126,129],{},[22,127,128],{},"Validate & Iterate"," — Rerun, compare metrics, review plans, continue optimizing",[80,131],{},[53,133,135],{"id":134},"_2-query-plans-explain-variants","2. Query Plans — EXPLAIN Variants",[137,138,140],"h3",{"id":139},"commands","Commands",[142,143,144,160],"table",{},[145,146,147],"thead",{},[148,149,150,154,157],"tr",{},[151,152,153],"th",{},"Command",[151,155,156],{},"What It Shows",[151,158,159],{},"When to Use",[161,162,163,177,189,202,215],"tbody",{},[148,164,165,171,174],{},[166,167,168],"td",{},[27,169,170],{},"EXPLAIN LOGICAL",[166,172,173],{},"Simplified logical plan",[166,175,176],{},"Quick overview",[148,178,179,183,186],{},[166,180,181],{},[27,182,106],{},[166,184,185],{},"Basic physical plan",[166,187,188],{},"Standard analysis",[148,190,191,196,199],{},[166,192,193],{},[27,194,195],{},"EXPLAIN VERBOSE",[166,197,198],{},"Detailed physical plan with extensive info",[166,200,201],{},"Deep investigation",[148,203,204,209,212],{},[166,205,206],{},[27,207,208],{},"EXPLAIN COSTS",[166,210,211],{},"Physical plan + cost estimates per operation",[166,213,214],{},"Cost comparison",[148,216,217,221,224],{},[166,218,219],{},[27,220,110],{},[166,222,223],{},"Executes query + actual runtime statistics",[166,225,226],{},"Production diagnosis",[228,229,235],"pre",{"className":230,"code":232,"language":233,"meta":234},[231],"language-sql","-- Quick check\nEXPLAIN SELECT shop_id, SUM(net_sales) FROM sales WHERE shop_id = 123 GROUP BY shop_id;\n\n-- Deep investigation\nEXPLAIN VERBOSE SELECT ...;\n\n-- Actual execution stats (runs the query!)\nEXPLAIN ANALYZE SELECT ...;\n","sql","",[27,236,232],{"__ignoreMap":234},[137,238,240],{"id":239},"plan-hierarchy","Plan Hierarchy",[14,242,243,244,247],{},"Plans are structured in 3 levels — read ",[22,245,246],{},"bottom-up"," starting from scan nodes:",[90,249,250,256,262],{},[61,251,252,255],{},[22,253,254],{},"Fragment"," — Top-level work units distributed to BEs. Spawn FragmentInstances.",[61,257,258,261],{},[22,259,260],{},"Pipeline"," — Chain of operators within a fragment. Concurrent PipelineDrivers.",[61,263,264,267],{},[22,265,266],{},"Operator"," — Atomic execution steps: scan, join, aggregate, sort, exchange, etc.",[137,269,271],{"id":270},"what-to-look-for","What to Look For",[58,273,274,280,286,292,298,304],{},[61,275,276,279],{},[22,277,278],{},"Total runtime"," and memory\u002FCPU ratios",[61,281,282,285],{},[22,283,284],{},"Filter pushdown"," — are predicates pushed to scan level?",[61,287,288,291],{},[22,289,290],{},"Data skew"," — uneven row counts across fragments",[61,293,294,297],{},[22,295,296],{},"Join strategy"," — Broadcast vs Shuffle vs Colocate vs Bucket Shuffle",[61,299,300,303],{},[22,301,302],{},"Exchange nodes"," — data movement costs between BEs",[61,305,306,309],{},[22,307,308],{},"Aggregation\u002Fsorting"," — are they expensive relative to total?",[137,311,313],{"id":312},"execution-phases","Execution Phases",[90,315,316,322,328],{},[61,317,318,321],{},[22,319,320],{},"Planning"," (FE) — Parse → Analyze → Optimize → Generate plan",[61,323,324,327],{},[22,325,326],{},"Scheduling"," (FE) — Distribute plan to BEs",[61,329,330,333],{},[22,331,332],{},"Execution"," (BE) — Pipeline engine processes the plan",[80,335],{},[53,337,339],{"id":338},"_3-query-profile-enabling-accessing","3. Query Profile — Enabling & Accessing",[137,341,343],{"id":342},"enable-profiling","Enable Profiling",[228,345,348],{"className":346,"code":347,"language":233,"meta":234},[231],"-- Per session\nSET enable_profile = true;\n\n-- Global\nSET GLOBAL enable_profile = true;\n",[27,349,347],{"__ignoreMap":234},[137,351,353],{"id":352},"slow-query-profiling-production-safe","Slow Query Profiling (production-safe)",[14,355,356],{},"Avoid overhead by only profiling slow queries:",[228,358,361],{"className":359,"code":360,"language":233,"meta":234},[231],"-- Only profile queries > 30 seconds\nSET GLOBAL big_query_profile_threshold = '30s';\n\n-- Supports: ms, s, m\nSET GLOBAL big_query_profile_threshold = '500ms';\n",[27,362,360],{"__ignoreMap":234},[137,364,366],{"id":365},"runtime-profile-v31-for-long-running-queries","Runtime Profile (v3.1+, for long-running queries)",[14,368,369],{},"Collects data at fixed intervals during execution:",[228,371,374],{"className":372,"code":373,"language":233,"meta":234},[231],"-- Default: 10 seconds. Adjust:\nSET runtime_profile_report_interval = 30;\n",[27,375,373],{"__ignoreMap":234},[137,377,379],{"id":378},"configuration-reference","Configuration Reference",[142,381,382,398],{},[145,383,384],{},[148,385,386,389,392,395],{},[151,387,388],{},"Parameter",[151,390,391],{},"Scope",[151,393,394],{},"Default",[151,396,397],{},"Purpose",[161,399,400,416,431,446,461],{},[148,401,402,407,410,413],{},[166,403,404],{},[27,405,406],{},"enable_profile",[166,408,409],{},"Session",[166,411,412],{},"false",[166,414,415],{},"Activate profiling",[148,417,418,423,425,428],{},[166,419,420],{},[27,421,422],{},"pipeline_profile_level",[166,424,409],{},[166,426,427],{},"1",[166,429,430],{},"1=merged metrics, 2=retain structure",[148,432,433,438,440,443],{},[166,434,435],{},[27,436,437],{},"runtime_profile_report_interval",[166,439,409],{},[166,441,442],{},"10",[166,444,445],{},"Seconds between runtime reports",[148,447,448,453,455,458],{},[166,449,450],{},[27,451,452],{},"big_query_profile_threshold",[166,454,409],{},[166,456,457],{},"0s",[166,459,460],{},"Duration threshold for auto-profiling",[148,462,463,468,471,473],{},[166,464,465],{},[27,466,467],{},"enable_statistics_collect_profile",[166,469,470],{},"FE Dynamic",[166,472,412],{},[166,474,475],{},"Profile statistics collection queries",[137,477,479],{"id":478},"accessing-profiles","Accessing Profiles",[228,481,484],{"className":482,"code":483,"language":233,"meta":234},[231],"-- Get last query ID\nSELECT last_query_id();\n\n-- List recent queries\nSHOW PROFILELIST;\n\n-- Detailed profile for specific query\nSELECT get_query_profile('\u003Cquery_id>');\n\n-- Full analysis with bottleneck highlighting\nANALYZE PROFILE FROM '\u003Cquery_id>';\n",[27,485,483],{"__ignoreMap":234},[14,487,488,33,491,494],{},[22,489,490],{},"Web UI:",[27,492,493],{},"http:\u002F\u002F\u003Cfe_ip>:\u003Cfe_http_port>"," -> Queries -> Finished Queries",[80,496],{},[53,498,500],{"id":499},"_4-text-based-profile-analysis","4. Text-Based Profile Analysis",[137,502,504],{"id":503},"analyze-profile","ANALYZE PROFILE",[228,506,509],{"className":507,"code":508,"language":233,"meta":234},[231],"-- List all queries (finished, failed, or running 10+ seconds)\nSHOW PROFILELIST;\n\n-- Detailed analysis\nANALYZE PROFILE FROM '\u003Cquery_id>';\n",[27,510,508],{"__ignoreMap":234},[14,512,513],{},[22,514,515],{},"Summary section shows:",[58,517,518,521,524,529,534],{},[61,519,520],{},"QueryID, version, status, total time",[61,522,523],{},"Memory usage",[61,525,526],{},[22,527,528],{},"Top 10 CPU consuming nodes",[61,530,531],{},[22,532,533],{},"Top 10 memory consuming nodes",[61,535,536],{},"Non-default session variables",[14,538,539],{},[22,540,541],{},"Fragments section shows per-node:",[58,543,544,547,553],{},[61,545,546],{},"Time, memory, cost estimates, output rows",[61,548,549,552],{},[22,550,551],{},"Red highlighting",": nodes exceeding 30% of total time",[61,554,555,558],{},[22,556,557],{},"Pink highlighting",": nodes in 15-30% range",[137,560,110],{"id":561},"explain-analyze",[228,563,566],{"className":564,"code":565,"language":233,"meta":234},[231],"-- Executes and profiles simultaneously\nEXPLAIN ANALYZE SELECT ...;\n\n-- Also works for INSERT (aborts transaction to prevent data changes)\nEXPLAIN ANALYZE INSERT INTO ... SELECT ...;\n",[27,567,565],{"__ignoreMap":234},[14,569,570,573],{},[22,571,572],{},"Limitation:"," INSERT ANALYZE only supported for default catalog tables.",[137,575,577],{"id":576},"runtime-profile-indicators","Runtime Profile Indicators",[58,579,580,586,589],{},[61,581,582,585],{},[27,583,584],{},"?"," (not started)",[61,587,588],{},"(executing)",[61,590,591],{},"(completed)",[14,593,594,595,598,599],{},"Progress: ",[27,596,597],{},"operators finished \u002F total operators"," and per-operator ",[27,600,601],{},"rows processed \u002F total rows",[14,603,604,607],{},[22,605,606],{},"Tip:"," Use MyCLI instead of mysql client for proper ANSI color rendering.",[80,609],{},[53,611,613],{"id":612},"_5-tuning-recipes-symptom-to-fix-playbook","5. Tuning Recipes — Symptom-to-Fix Playbook",[137,615,617],{"id":616},"fast-diagnosis-workflow","Fast Diagnosis Workflow",[90,619,620,634,640],{},[61,621,622,625,626],{},[22,623,624],{},"Initial scan"," — Check execution overview:\n",[58,627,628,631],{},[61,629,630],{},"Memory usage > 80%?",[61,632,633],{},"Spill bytes > 1GB?",[61,635,636,639],{},[22,637,638],{},"Identify bottleneck"," — Sort operators by time percentage, find the slowest",[61,641,642,645],{},[22,643,644],{},"Match signature"," — Confirm the specific bottleneck type, then apply fix",[137,647,649],{"id":648},"recipe-scan-bottleneck","Recipe: Scan Bottleneck",[14,651,652],{},[22,653,654],{},"Symptoms:",[58,656,657,668,679,686,689],{},[61,658,659,660,663,664,667],{},"High ",[27,661,662],{},"BytesRead",", ",[27,665,666],{},"IOTaskExecTime"," — cold\u002Fslow storage",[61,669,670,671,674,675,678],{},"Low ",[27,672,673],{},"PushdownPredicates",", high ",[27,676,677],{},"ExprFilterRows"," — missing filter pushdown",[61,680,681,682,685],{},"Elevated ",[27,683,684],{},"IOTaskWaitTime"," — thread-pool saturation",[61,687,688],{},"Uneven tablet row counts — data skew",[61,690,691],{},"Many small segments — segment fragmentation",[14,693,694],{},[22,695,696],{},"Fixes:",[58,698,699,706,709,719,722],{},[61,700,701,702,705],{},"Enable ",[22,703,704],{},"Data Cache"," for cold storage",[61,707,708],{},"Simplify predicates to enable pushdown (avoid functions on partition\u002Fsort columns)",[61,710,711,712,715,716],{},"Add ",[22,713,714],{},"bloom filter"," or ",[22,717,718],{},"bitmap indexes",[61,720,721],{},"Rebalance bucketing (increase buckets or change hash key)",[61,723,724,725],{},"Trigger manual compaction: ",[27,726,727],{},"ALTER TABLE ... COMPACT;",[137,729,731],{"id":730},"recipe-aggregation-bottleneck","Recipe: Aggregation Bottleneck",[14,733,734],{},[22,735,654],{},[58,737,738,741,744,747],{},[61,739,740],{},"High-cardinality GROUP BY causing hash table bloat",[61,742,743],{},"Shuffle skew across fragments",[61,745,746],{},"State-heavy functions (HLL, BITMAP, COUNT DISTINCT)",[61,748,749,750,753],{},"Degraded partial aggregation (",[27,751,752],{},"PassThroughRowCount"," high in auto-mode)",[14,755,756],{},[22,757,696],{},[58,759,760,766,773,776],{},[61,761,701,762,765],{},[22,763,764],{},"sorted streaming aggregation"," (align GROUP BY with sort key)",[61,767,768,769,772],{},"Create ",[22,770,771],{},"roll-up materialized views"," for common aggregations",[61,774,775],{},"Cast wide keys to integers",[61,777,778],{},"Pre-compute sketches (HLL, BITMAP) at ingestion",[137,780,782],{"id":781},"recipe-join-bottleneck","Recipe: Join Bottleneck",[14,784,785],{},[22,786,654],{},[58,788,789,792,795,798,801],{},[61,790,791],{},"Oversized build side exceeding memory",[61,793,794],{},"Cache-inefficient probe operations",[61,796,797],{},"Shuffle skew on join keys",[61,799,800],{},"Accidental broadcast of large tables",[61,802,803],{},"Missing runtime filters",[14,805,806],{},[22,807,696],{},[58,809,810,813,816,823,826],{},[61,811,812],{},"Swap probe\u002Fbuild tables (smaller table on build side)",[61,814,815],{},"Pre-filter data before join",[61,817,818,819,822],{},"Enable hash spilling (",[27,820,821],{},"SET enable_spill = true;",")",[61,824,825],{},"Adjust broadcast threshold or force shuffle via hint",[61,827,828],{},"Check runtime filter effectiveness in profile",[137,830,832],{"id":831},"recipe-network-exchange-bottleneck","Recipe: Network Exchange Bottleneck",[14,834,835],{},[22,836,654],{},[58,838,839,848],{},[61,840,841,844,845],{},[27,842,843],{},"NetworkTime"," > 30% of total with large ",[27,846,847],{},"BytesSent",[61,849,850],{},"Receiver backlog (thread pool constraints)",[14,852,853],{},[22,854,696],{},[228,856,859],{"className":857,"code":858,"language":233,"meta":234},[231],"-- Enable network compression\nSET transmission_compression_type = 'zstd';\n",[27,860,858],{"__ignoreMap":234},[58,862,863,866],{},[61,864,865],{},"Reduce data volume before exchange (filter earlier, pre-aggregate)",[61,867,868],{},"Check for unnecessary shuffles — use colocate joins where possible",[137,870,872],{"id":871},"recipe-sortmergewindow-bottleneck","Recipe: Sort\u002FMerge\u002FWindow Bottleneck",[14,874,875],{},[22,876,654],{},[58,878,879,886],{},[61,880,881,882,885],{},"Spilling when ",[27,883,884],{},"MaxBufferedBytes"," > 2GB",[61,887,888],{},"High merge time relative to total",[14,890,891],{},[22,892,696],{},[58,894,895,901,904,910],{},[61,896,711,897,900],{},[27,898,899],{},"LIMIT"," clause when possible",[61,902,903],{},"Pre-aggregate data before sorting",[61,905,906,907],{},"Increase ",[27,908,909],{},"sort_spill_threshold",[61,911,912],{},"Align window PARTITION BY with table sort key",[137,914,916],{"id":915},"memory-quick-reference","Memory Quick Reference",[142,918,919,932],{},[145,920,921],{},[148,922,923,926,929],{},[151,924,925],{},"Threshold",[151,927,928],{},"Metric",[151,930,931],{},"Action",[161,933,934,951],{},[148,935,936,939,944],{},[166,937,938],{},"> 80% BE memory",[166,940,941],{},[27,942,943],{},"QueryPeakMemoryUsagePerNode",[166,945,946,947,950],{},"Lower ",[27,948,949],{},"exec_mem_limit"," or add RAM",[148,952,953,959,964],{},[166,954,955,958],{},[27,956,957],{},"SpillBytes"," > 0",[166,960,961],{},[27,962,963],{},"QuerySpillBytes",[166,965,966],{},"Upgrade to SR 3.2+ or increase memory",[137,968,970],{"id":969},"post-mortem-template","Post-Mortem Template",[14,972,973,974],{},"Document every tuning: ",[22,975,976],{},"symptom -> root cause -> fix applied -> quantified outcome",[80,978],{},[53,980,982],{"id":981},"_6-schema-tuning","6. Schema Tuning",[137,984,986],{"id":985},"table-type-selection","Table Type Selection",[142,988,989,1001],{},[145,990,991],{},[148,992,993,996,998],{},[151,994,995],{},"Type",[151,997,159],{},[151,999,1000],{},"Key Property",[161,1002,1003,1014,1025,1036],{},[148,1004,1005,1008,1011],{},[166,1006,1007],{},"DUPLICATE KEY",[166,1009,1010],{},"Raw data logging, no pre-aggregation",[166,1012,1013],{},"Allows duplicate rows",[148,1015,1016,1019,1022],{},[166,1017,1018],{},"AGGREGATE KEY",[166,1020,1021],{},"Pre-aggregated analytics (SUM, MIN, MAX, REPLACE)",[166,1023,1024],{},"Aggregates on load",[148,1026,1027,1030,1033],{},[166,1028,1029],{},"UNIQUE KEY",[166,1031,1032],{},"Frequently updated datasets",[166,1034,1035],{},"New overwrites old",[148,1037,1038,1041,1044],{},[166,1039,1040],{},"PRIMARY KEY",[166,1042,1043],{},"Real-time updates with ACID semantics",[166,1045,1046],{},"Strongest uniqueness guarantee",[137,1048,1050],{"id":1049},"flat-table-vs-star-schema","Flat Table vs Star Schema",[142,1052,1053,1066],{},[145,1054,1055],{},[148,1056,1057,1060,1063],{},[151,1058,1059],{},"Approach",[151,1061,1062],{},"Pros",[151,1064,1065],{},"Cons",[161,1067,1068,1081],{},[148,1069,1070,1075,1078],{},[166,1071,1072],{},[22,1073,1074],{},"Flat (denormalized)",[166,1076,1077],{},"Extreme query concurrency, lowest latency",[166,1079,1080],{},"Expensive dimension maintenance, high storage, sorting overhead during load",[148,1082,1083,1088,1091],{},[166,1084,1085],{},[22,1086,1087],{},"Star schema",[166,1089,1090],{},"Flexible multi-table queries, easier maintenance",[166,1092,1093],{},"Join overhead at query time",[14,1095,1096,1099],{},[22,1097,1098],{},"Rule:"," Use flat tables for extreme concurrency\u002Flatency requirements. Star schema for flexibility.",[137,1101,1103],{"id":1102},"colocate-tables","Colocate Tables",[228,1105,1108],{"className":1106,"code":1107,"language":233,"meta":234},[231],"CREATE TABLE ... PROPERTIES (\"colocate_with\" = \"group_name\");\n",[27,1109,1107],{"__ignoreMap":234},[14,1111,1112,1113,1116],{},"Groups tables by bucketing column for ",[22,1114,1115],{},"local joins without network transfer",". Matching key + bucket count required.",[137,1118,1120],{"id":1119},"partition-strategy","Partition Strategy",[14,1122,1123],{},"Time-based RANGE partitions provide:",[58,1125,1126,1129,1135],{},[61,1127,1128],{},"Clear hot\u002Fcold data distinction",[61,1130,1131,1132,822],{},"Tiered storage optimization (SSD + SATA with ",[27,1133,1134],{},"storage_cooldown_time",[61,1136,1137],{},"Efficient partition-based deletion",[137,1139,1141],{"id":1140},"bucket-strategy","Bucket Strategy",[58,1143,1144,1151,1158],{},[61,1145,1146,1147,1150],{},"Use ",[22,1148,1149],{},"high-cardinality"," columns to prevent skew",[61,1152,1153,1154,1157],{},"Target: ",[22,1155,1156],{},"100MB-1GB compressed"," per bucket",[61,1159,1160],{},"Always explicitly specify columns — avoid random bucketing for analytical tables",[137,1162,1164],{"id":1163},"index-optimization","Index Optimization",[1166,1167,1169],"h4",{"id":1168},"sparse-index-prefix-index","Sparse Index (Prefix Index)",[58,1171,1172,1178,1184,1191],{},[61,1173,1174,1177],{},[22,1175,1176],{},"Granularity:"," 1024 rows",[61,1179,1180,1183],{},[22,1181,1182],{},"Fixed prefix size:"," 36 bytes",[61,1185,1186,1187,1190],{},"Place high-frequency filter fields ",[22,1188,1189],{},"first"," in schema",[61,1192,1193,1196,1197,1200],{},[22,1194,1195],{},"Critical:"," VARCHAR field truncates the index — always place VARCHAR ",[22,1198,1199],{},"last"," in sparse index",[1166,1202,1204],{"id":1203},"bloom-filter-index","Bloom Filter Index",[228,1206,1209],{"className":1207,"code":1208,"language":233,"meta":234},[231],"PROPERTIES (\"bloom_filter_columns\" = \"column1, column2\")\n",[27,1210,1208],{"__ignoreMap":234},[58,1212,1213,1219],{},[61,1214,1215,1216,1218],{},"Best for ",[22,1217,1149],{}," columns",[61,1220,1221],{},"Enables placing VARCHAR fields earlier when needed (compensates for sparse index limitation)",[1166,1223,1225],{"id":1224},"bitmap-index","Bitmap Index",[228,1227,1230],{"className":1228,"code":1229,"language":233,"meta":234},[231],"CREATE INDEX idx_status ON table(status) USING BITMAP;\n",[27,1231,1229],{"__ignoreMap":234},[58,1233,1234,1240],{},[61,1235,1215,1236,1239],{},[22,1237,1238],{},"low-cardinality"," columns (gender, city, status)",[61,1241,1242],{},"Applicable to: Duplicate Key tables and key columns of Aggregate\u002FUnique Key tables",[137,1244,1246],{"id":1245},"materialized-views-rollups","Materialized Views (Rollups)",[14,1248,1249],{},"Use cases:",[58,1251,1252,1255,1258],{},[61,1253,1254],{},"Aggregate specific column combinations different from base table sort key",[61,1256,1257],{},"Optimize prefix index coverage for different query patterns",[61,1259,1260],{},"Reorder columns to match common WHERE clause patterns",[137,1262,1264],{"id":1263},"schema-change-types","Schema Change Types",[142,1266,1267,1279],{},[145,1268,1269],{},[148,1270,1271,1273,1276],{},[151,1272,995],{},[151,1274,1275],{},"Operation",[151,1277,1278],{},"Data Impact",[161,1280,1281,1294,1307],{},[148,1282,1283,1288,1291],{},[166,1284,1285],{},[22,1286,1287],{},"Sorted",[166,1289,1290],{},"Drop columns, reorder data",[166,1292,1293],{},"Full data rewrite",[148,1295,1296,1301,1304],{},[166,1297,1298],{},[22,1299,1300],{},"Direct",[166,1302,1303],{},"Modify column types",[166,1305,1306],{},"Data transformation, no reorder",[148,1308,1309,1314,1317],{},[166,1310,1311],{},[22,1312,1313],{},"Linked",[166,1315,1316],{},"Add columns",[166,1318,1319],{},"Structure-only, no data transformation",[14,1321,1322,1325],{},[22,1323,1324],{},"Anti-pattern:"," Minimize sorted schema changes through careful initial design.",[80,1327],{},[53,1329,1331],{"id":1330},"_7-query-hints","7. Query Hints",[137,1333,1335],{"id":1334},"set_var-session-variable-hints","SET_VAR — Session Variable Hints",[14,1337,1338],{},"Override session variables for a single query:",[228,1340,1343],{"className":1341,"code":1342,"language":233,"meta":234},[231],"SELECT \u002F*+ SET_VAR(key=value [, key=value]) *\u002F ...\n",[27,1344,1342],{"__ignoreMap":234},[14,1346,1347],{},[22,1348,1349],{},"Common uses:",[228,1351,1354],{"className":1352,"code":1353,"language":233,"meta":234},[231],"-- Force streaming preaggregation\nSELECT \u002F*+ SET_VAR(streaming_preaggregation_mode='force_streaming') *\u002F\n  shop_id, SUM(net_sales) FROM sales GROUP BY shop_id;\n\n-- Set query timeout\nSELECT \u002F*+ SET_VAR(query_timeout=60) *\u002F ...;\n\n-- Enable spill\nSELECT \u002F*+ SET_VAR(enable_spill=true) *\u002F ...;\n",[27,1355,1353],{"__ignoreMap":234},[14,1357,1358,1360],{},[22,1359,572],{}," SET_VAR in CTE's SELECT clause does NOT take effect.",[137,1362,1364],{"id":1363},"set_user_variable-cache-subquery-results-v324","SET_USER_VARIABLE — Cache Subquery Results (v3.2.4+)",[14,1366,1367],{},"Avoid repeated scalar subquery execution:",[228,1369,1372],{"className":1370,"code":1371,"language":233,"meta":234},[231],"SELECT \u002F*+ SET_USER_VARIABLE(@threshold = (SELECT AVG(amount) FROM orders)) *\u002F\n  * FROM orders WHERE amount > @threshold;\n",[27,1373,1371],{"__ignoreMap":234},[14,1375,1376,1378],{},[22,1377,572],{}," Cannot be used in CREATE MATERIALIZED VIEW or CREATE VIEW.",[137,1380,1382],{"id":1381},"join-hints","Join Hints",[14,1384,1385],{},"Force specific join strategies:",[228,1387,1390],{"className":1388,"code":1389,"language":233,"meta":234},[231],"-- Force shuffle join (avoid accidental broadcast of large table)\nSELECT * FROM large_table a JOIN [SHUFFLE] medium_table b ON a.id = b.id;\n\n-- Force broadcast (small dimension table)\nSELECT * FROM fact_table a JOIN [BROADCAST] dim_table b ON a.dim_id = b.id;\n\n-- Force bucket shuffle (when bucketing key matches join key)\nSELECT * FROM sales a JOIN [BUCKET] customers b ON a.customer_id = b.customer_id;\n\n-- Force colocate join (pre-distributed colocated tables)\nSELECT * FROM sales a JOIN [COLOCATE] customers b ON a.customer_id = b.customer_id;\n\n-- Preserve original join order (disable reorder)\nSELECT * FROM a JOIN [UNREORDER] b ON a.id = b.id;\n",[27,1391,1389],{"__ignoreMap":234},[14,1393,1394,1396,1397,1400],{},[22,1395,1195],{}," When a Join hint is used, the optimizer ",[22,1398,1399],{},"does NOT perform Join Reorder",". You take full control.",[14,1402,1403],{},[22,1404,1405],{},"Verify hint effectiveness:",[228,1407,1410],{"className":1408,"code":1409,"language":233,"meta":234},[231],"EXPLAIN SELECT * FROM a JOIN [SHUFFLE] b ON a.id = b.id;\n-- Check DistributionMode in output\n",[27,1411,1409],{"__ignoreMap":234},[80,1413],{},[53,1415,1417],{"id":1416},"_8-operator-metrics-reference","8. Operator Metrics Reference",[137,1419,1421],{"id":1420},"summary-level-metrics","Summary-Level Metrics",[142,1423,1424,1433],{},[145,1425,1426],{},[148,1427,1428,1430],{},[151,1429,928],{},[151,1431,1432],{},"What It Tells You",[161,1434,1435,1443,1451],{},[148,1436,1437,1440],{},[166,1438,1439],{},"Total duration",[166,1441,1442],{},"End-to-end query time",[148,1444,1445,1448],{},[166,1446,1447],{},"Query State",[166,1449,1450],{},"Success\u002Ffailure\u002Frunning",[148,1452,1453,1456],{},[166,1454,1455],{},"Default DB, SQL, Session vars",[166,1457,1458],{},"Query context",[137,1460,1462],{"id":1461},"planner-metrics","Planner Metrics",[14,1464,1465],{},"Covers parsing, analyzing, transforming, optimizing phases.",[14,1467,1468,1471],{},[22,1469,1470],{},"Concern threshold:"," Planner time > 10ms warrants investigation. Common causes:",[58,1473,1474,1477,1480],{},[61,1475,1476],{},"Complex queries with many joins",[61,1478,1479],{},"Numerous materialized views to evaluate",[61,1481,1482],{},"External table metadata fetching",[137,1484,1486],{"id":1485},"execution-overview-metrics","Execution Overview Metrics",[142,1488,1489,1502],{},[145,1490,1491],{},[148,1492,1493,1496,1499],{},[151,1494,1495],{},"Category",[151,1497,1498],{},"Key Metric",[151,1500,1501],{},"Normal Threshold",[161,1503,1504,1517,1530,1543,1556,1568],{},[148,1505,1506,1511,1514],{},[166,1507,1508],{},[22,1509,1510],{},"Memory",[166,1512,1513],{},"Peak consumption",[166,1515,1516],{},"\u003C 80% BE capacity",[148,1518,1519,1524,1527],{},[166,1520,1521],{},[22,1522,1523],{},"CPU",[166,1525,1526],{},"Cumulative CPU time",[166,1528,1529],{},"Relative to query complexity",[148,1531,1532,1537,1540],{},[166,1533,1534],{},[22,1535,1536],{},"Network",[166,1538,1539],{},"Exchange network time",[166,1541,1542],{},"Low relative to total",[148,1544,1545,1550,1553],{},[166,1546,1547],{},[22,1548,1549],{},"Scan",[166,1551,1552],{},"IO time aggregated",[166,1554,1555],{},"Depends on data volume",[148,1557,1558,1563,1565],{},[166,1559,1560],{},[22,1561,1562],{},"Disk Spill",[166,1564,957],{},[166,1566,1567],{},"\u003C 1GB",[148,1569,1570,1575,1578],{},[166,1571,1572],{},[22,1573,1574],{},"Schedule",[166,1576,1577],{},"Schedule time",[166,1579,1580],{},"\u003C 1s for simple queries",[137,1582,1584],{"id":1583},"pipeline-level-metrics","Pipeline-Level Metrics",[14,1586,1587],{},[22,1588,1589],{},"Core relationship:",[228,1591,1596],{"className":1592,"code":1594,"language":1595},[1593],"language-text","DriverTotalTime = ActiveTime + PendingTime + ScheduleTime\n","text",[27,1597,1594],{"__ignoreMap":234},[142,1599,1600,1609],{},[145,1601,1602],{},[148,1603,1604,1606],{},[151,1605,928],{},[151,1607,1608],{},"Meaning",[161,1610,1611,1621,1631],{},[148,1612,1613,1618],{},[166,1614,1615],{},[27,1616,1617],{},"ActiveTime",[166,1619,1620],{},"Actual operator execution time",[148,1622,1623,1628],{},[166,1624,1625],{},[27,1626,1627],{},"PendingTime",[166,1629,1630],{},"Blocking time (InputEmpty, OutputFull, PreconditionBlock, PendingFinish)",[148,1632,1633,1638],{},[166,1634,1635],{},[27,1636,1637],{},"ScheduleTime",[166,1639,1640],{},"Queue-to-execution wait",[14,1642,1643,1646,1647,1649],{},[22,1644,1645],{},"Diagnosis:"," If ",[27,1648,1627],{}," dominates, check which sub-reason:",[58,1651,1652,1658,1664,1670],{},[61,1653,1654,1657],{},[27,1655,1656],{},"InputEmpty"," — upstream operator is slow",[61,1659,1660,1663],{},[27,1661,1662],{},"OutputFull"," — downstream operator is blocked",[61,1665,1666,1669],{},[27,1667,1668],{},"PreconditionBlock"," — waiting for dependency (e.g., build side of hash join)",[61,1671,1672,1675],{},[27,1673,1674],{},"PendingFinish"," — waiting for other pipelines to complete",[137,1677,1679],{"id":1678},"olap-scan-operator-metrics","OLAP Scan Operator Metrics",[142,1681,1682,1693],{},[145,1683,1684],{},[148,1685,1686,1688,1690],{},[151,1687,928],{},[151,1689,1608],{},[151,1691,1692],{},"Tuning Signal",[161,1694,1695,1711,1724,1736,1749,1765,1780,1793,1806,1819,1831,1843,1856],{},[148,1696,1697,1705,1708],{},[166,1698,1699,107,1702],{},[27,1700,1701],{},"Table",[27,1703,1704],{},"Rollup",[166,1706,1707],{},"Which table\u002FMV is scanned",[166,1709,1710],{},"Verify correct MV selection",[148,1712,1713,1718,1721],{},[166,1714,1715],{},[27,1716,1717],{},"TabletCount",[166,1719,1720],{},"Number of tablets scanned",[166,1722,1723],{},"High = missing partition pruning",[148,1725,1726,1730,1733],{},[166,1727,1728],{},[27,1729,662],{},[166,1731,1732],{},"Total bytes read",[166,1734,1735],{},"High = missing filter pushdown",[148,1737,1738,1743,1746],{},[166,1739,1740],{},[27,1741,1742],{},"CompressedBytesRead",[166,1744,1745],{},"Compressed bytes from storage",[166,1747,1748],{},"Storage I\u002FO indicator",[148,1750,1751,1756,1759],{},[166,1752,1753],{},[27,1754,1755],{},"RowsRead",[166,1757,1758],{},"Rows after filtering",[166,1760,1761,1762],{},"Compare with ",[27,1763,1764],{},"RawRowsRead",[148,1766,1767,1771,1774],{},[166,1768,1769],{},[27,1770,1764],{},[166,1772,1773],{},"Rows before filtering",[166,1775,1776,1777,1779],{},"High ratio to ",[27,1778,1755],{}," = filter not pushed down",[148,1781,1782,1787,1790],{},[166,1783,1784],{},[27,1785,1786],{},"CachedPagesNum",[166,1788,1789],{},"Pages from cache",[166,1791,1792],{},"Low = cold data, enable Data Cache",[148,1794,1795,1800,1803],{},[166,1796,1797],{},[27,1798,1799],{},"ReadPagesNum",[166,1801,1802],{},"Total pages read",[166,1804,1805],{},"Baseline for cache hit ratio",[148,1807,1808,1813,1816],{},[166,1809,1810],{},[27,1811,1812],{},"ScanTime",[166,1814,1815],{},"Total scan duration",[166,1817,1818],{},"Primary scan bottleneck metric",[148,1820,1821,1825,1828],{},[166,1822,1823],{},[27,1824,666],{},[166,1826,1827],{},"I\u002FO execution time",[166,1829,1830],{},"High = slow storage",[148,1832,1833,1837,1840],{},[166,1834,1835],{},[27,1836,684],{},[166,1838,1839],{},"I\u002FO queue wait time",[166,1841,1842],{},"High = thread-pool saturation",[148,1844,1845,1850,1853],{},[166,1846,1847],{},[27,1848,1849],{},"PeakIOTasks",[166,1851,1852],{},"Max concurrent I\u002FO tasks",[166,1854,1855],{},"Thread pool capacity",[148,1857,1858,1863,1866],{},[166,1859,1860],{},[27,1861,1862],{},"PeakChunkBufferSize",[166,1864,1865],{},"Max chunk buffer",[166,1867,1868],{},"Memory pressure indicator",[14,1870,1871],{},[22,1872,1873],{},"Key ratios:",[58,1875,1876,1882],{},[61,1877,1878,1881],{},[27,1879,1880],{},"RawRowsRead \u002F RowsRead"," — Filter efficiency. High ratio = predicates not pushed down",[61,1883,1884,1887],{},[27,1885,1886],{},"CachedPagesNum \u002F ReadPagesNum"," — Cache hit ratio. Low = enable Data Cache",[137,1889,1891],{"id":1890},"connector-scan-operator-external-tables","Connector Scan Operator (External Tables)",[14,1893,1894],{},"Same metrics as OLAP Scan, plus:",[58,1896,1897],{},[61,1898,1899,1902],{},[27,1900,1901],{},"DataSourceType"," — Identifies source (Iceberg, Hive, Hudi, Delta)",[137,1904,1906],{"id":1905},"exchange-sink-metrics","Exchange Sink Metrics",[142,1908,1909,1917],{},[145,1910,1911],{},[148,1912,1913,1915],{},[151,1914,928],{},[151,1916,1608],{},[161,1918,1919,1927,1935,1943,1951,1959],{},[148,1920,1921,1924],{},[166,1922,1923],{},"Serialization time",[166,1925,1926],{},"Encoding overhead",[148,1928,1929,1932],{},[166,1930,1931],{},"Hash time",[166,1933,1934],{},"Shuffle key computation",[148,1936,1937,1940],{},[166,1938,1939],{},"Compression metrics",[166,1941,1942],{},"Network compression efficiency",[148,1944,1945,1948],{},[166,1946,1947],{},"RPC counts",[166,1949,1950],{},"Number of network calls",[148,1952,1953,1956],{},[166,1954,1955],{},"Network bandwidth",[166,1957,1958],{},"Data transfer rate",[148,1960,1961,1964],{},[166,1962,1963],{},"Throughput",[166,1965,1966],{},"Messages per second",[14,1968,1969,1972],{},[22,1970,1971],{},"Passthrough optimization:"," When data is colocated, \"short-circuit logic\" skips network transfer entirely.",[137,1974,1976],{"id":1975},"exchange-source-metrics","Exchange Source Metrics",[142,1978,1979,1987],{},[145,1980,1981],{},[148,1982,1983,1985],{},[151,1984,928],{},[151,1986,1608],{},[161,1988,1989,1997,2005],{},[148,1990,1991,1994],{},[166,1992,1993],{},"Decompression time",[166,1995,1996],{},"Decoding overhead",[148,1998,1999,2002],{},[166,2000,2001],{},"Deserialization time",[166,2003,2004],{},"Message parsing",[148,2006,2007,2010],{},[166,2008,2009],{},"Lock waiting time",[166,2011,2012],{},"Contention indicator",[14,2014,2015],{},[22,2016,2017],{},"Bottleneck patterns:",[58,2019,2020,2023],{},[61,2021,2022],{},"Broadcast joins with suboptimal plans — large table broadcast",[61,2024,2025],{},"Shuffle aggregation\u002Fjoin with large tables — excessive network transfer",[137,2027,2029],{"id":2028},"aggregate-operator-metrics","Aggregate Operator Metrics",[142,2031,2032,2042],{},[145,2033,2034],{},[148,2035,2036,2038,2040],{},[151,2037,928],{},[151,2039,1608],{},[151,2041,1692],{},[161,2043,2044,2055,2066,2078],{},[148,2045,2046,2049,2052],{},[166,2047,2048],{},"Hash table size",[166,2050,2051],{},"Number of groups",[166,2053,2054],{},"High = high-cardinality GROUP BY",[148,2056,2057,2060,2063],{},[166,2058,2059],{},"Hash table memory",[166,2061,2062],{},"Memory consumed",[166,2064,2065],{},"Approaching limits = consider MV",[148,2067,2068,2072,2075],{},[166,2069,2070],{},[27,2071,752],{},[166,2073,2074],{},"Rows in streaming mode",[166,2076,2077],{},"High = auto-mode degraded to streaming, partial agg ineffective",[148,2079,2080,2083,2086],{},[166,2081,2082],{},"Result construction time",[166,2084,2085],{},"Final result build",[166,2087,2088],{},"Usually not bottleneck",[137,2090,2092],{"id":2091},"join-operator-metrics","Join Operator Metrics",[142,2094,2095,2105],{},[145,2096,2097],{},[148,2098,2099,2101,2103],{},[151,2100,928],{},[151,2102,1608],{},[151,2104,1692],{},[161,2106,2107,2120,2132,2143,2154,2165,2176],{},[148,2108,2109,2114,2117],{},[166,2110,2111],{},[27,2112,2113],{},"DistributionMode",[166,2115,2116],{},"BROADCAST \u002F PARTITIONED \u002F COLOCATE",[166,2118,2119],{},"Verify expected strategy",[148,2121,2122,2127,2130],{},[166,2123,2124],{},[27,2125,2126],{},"JoinType",[166,2128,2129],{},"INNER \u002F LEFT \u002F RIGHT \u002F etc.",[166,2131],{},[148,2133,2134,2137,2140],{},[166,2135,2136],{},"Hash table bucket stats",[166,2138,2139],{},"Distribution quality",[166,2141,2142],{},"Skew = hot buckets",[148,2144,2145,2148,2151],{},[166,2146,2147],{},"Build phase time",[166,2149,2150],{},"Hash table construction",[166,2152,2153],{},"High = large build side",[148,2155,2156,2159,2162],{},[166,2157,2158],{},"Probe phase time",[166,2160,2161],{},"Hash table lookups",[166,2163,2164],{},"High = cache-inefficient",[148,2166,2167,2170,2173],{},[166,2168,2169],{},"Conjunct evaluation time",[166,2171,2172],{},"Join predicate compute",[166,2174,2175],{},"High = complex predicates",[148,2177,2178,2181,2184],{},[166,2179,2180],{},"Runtime filter construction",[166,2182,2183],{},"Filter build time",[166,2185,2186],{},"Missing = add hint",[137,2188,2190],{"id":2189},"sort-operator-metrics","Sort Operator Metrics",[142,2192,2193,2203],{},[145,2194,2195],{},[148,2196,2197,2199,2201],{},[151,2198,928],{},[151,2200,1608],{},[151,2202,1692],{},[161,2204,2205,2218,2230,2242,2253],{},[148,2206,2207,2212,2215],{},[166,2208,2209],{},[27,2210,2211],{},"SortType",[166,2213,2214],{},"Full sort vs top-N",[166,2216,2217],{},"top-N is much cheaper",[148,2219,2220,2224,2227],{},[166,2221,2222],{},[27,2223,884],{},[166,2225,2226],{},"Peak memory",[166,2228,2229],{},"> 2GB = spilling likely",[148,2231,2232,2237,2240],{},[166,2233,2234],{},[27,2235,2236],{},"MaxBufferedRows",[166,2238,2239],{},"Peak rows buffered",[166,2241],{},[148,2243,2244,2247,2250],{},[166,2245,2246],{},"Sorted run count",[166,2248,2249],{},"Number of sorted runs",[166,2251,2252],{},"High = many merge passes",[148,2254,2255,2258,2261],{},[166,2256,2257],{},"Building \u002F Merging \u002F Sorting \u002F Output times",[166,2259,2260],{},"Stage breakdown",[166,2262,2263],{},"Identify dominant stage",[137,2265,2267],{"id":2266},"window-function-operator-metrics","Window Function Operator Metrics",[142,2269,2270,2278],{},[145,2271,2272],{},[148,2273,2274,2276],{},[151,2275,928],{},[151,2277,1608],{},[161,2279,2280,2290,2298,2306],{},[148,2281,2282,2287],{},[166,2283,2284],{},[27,2285,2286],{},"ProcessMode",[166,2288,2289],{},"Materializing\u002FStreaming x Cumulative\u002FRemovableCumulative\u002FByDefinition",[148,2291,2292,2295],{},[166,2293,2294],{},"Partition\u002Fpeer group boundary searches",[166,2296,2297],{},"Partitioning overhead",[148,2299,2300,2303],{},[166,2301,2302],{},"Peak buffered rows",[166,2304,2305],{},"Memory pressure",[148,2307,2308,2311],{},[166,2309,2310],{},"Unused row removal count",[166,2312,2313],{},"Efficiency of streaming mode",[137,2315,2317],{"id":2316},"merge-operator-stages","Merge Operator Stages",[14,2319,2320],{},"Execution progresses through: Init -> Prepare -> Process -> SplitChunk -> FetchChunk -> Pending -> Finished",[14,2322,2323],{},"Each stage has per-stage counts and times. Late materialization buffering metrics available.",[137,2325,2327],{"id":2326},"olaptablesink-insert-metrics","OlapTableSink (INSERT) Metrics",[142,2329,2330,2340],{},[145,2331,2332],{},[148,2333,2334,2336,2338],{},[151,2335,928],{},[151,2337,1608],{},[151,2339,1692],{},[161,2341,2342,2353,2366,2378,2394],{},[148,2343,2344,2348,2351],{},[166,2345,2346],{},[27,2347,1755],{},[166,2349,2350],{},"Input rows",[166,2352],{},[148,2354,2355,2360,2363],{},[166,2356,2357],{},[27,2358,2359],{},"RowsFiltered",[166,2361,2362],{},"Rejected rows",[166,2364,2365],{},"High = data quality issue",[148,2367,2368,2373,2376],{},[166,2369,2370],{},[27,2371,2372],{},"RowsReturned",[166,2374,2375],{},"Successfully written",[166,2377],{},[148,2379,2380,2386,2389],{},[166,2381,2382,2385],{},[27,2383,2384],{},"PushChunkNum"," per node",[166,2387,2388],{},"Chunks sent to each BE",[166,2390,2391],{},[22,2392,2393],{},"Large differences = data skew",[148,2395,2396,2405,2408],{},[166,2397,2398,2401,2402],{},[27,2399,2400],{},"RpcClientSideTime"," vs ",[27,2403,2404],{},"RpcServerSideTime",[166,2406,2407],{},"Network overhead",[166,2409,2410],{},"Client >> Server = enable compression",[137,2412,2414],{"id":2413},"project-operator","Project Operator",[14,2416,2417],{},"Computes expressions (calculations, casts, etc.). If expensive expressions exist, this can take significant time. Check:",[58,2419,2420,2423],{},[61,2421,2422],{},"Expression computation time",[61,2424,2425],{},"Common sub-expression timing",[137,2427,2429],{"id":2428},"localexchange-operator","LocalExchange Operator",[14,2431,2432],{},"Types: Passthrough, Partition, or Broadcast. Metrics:",[58,2434,2435],{},[61,2436,2437],{},"Peak memory, buffer size, chunk counts, per-chunk metrics",[80,2439],{},{"title":234,"searchDepth":2441,"depth":2441,"links":2442},2,[2443,2444,2445,2452,2459,2464,2474,2484,2489],{"id":55,"depth":2441,"text":56},{"id":84,"depth":2441,"text":85},{"id":134,"depth":2441,"text":135,"children":2446},[2447,2449,2450,2451],{"id":139,"depth":2448,"text":140},3,{"id":239,"depth":2448,"text":240},{"id":270,"depth":2448,"text":271},{"id":312,"depth":2448,"text":313},{"id":338,"depth":2441,"text":339,"children":2453},[2454,2455,2456,2457,2458],{"id":342,"depth":2448,"text":343},{"id":352,"depth":2448,"text":353},{"id":365,"depth":2448,"text":366},{"id":378,"depth":2448,"text":379},{"id":478,"depth":2448,"text":479},{"id":499,"depth":2441,"text":500,"children":2460},[2461,2462,2463],{"id":503,"depth":2448,"text":504},{"id":561,"depth":2448,"text":110},{"id":576,"depth":2448,"text":577},{"id":612,"depth":2441,"text":613,"children":2465},[2466,2467,2468,2469,2470,2471,2472,2473],{"id":616,"depth":2448,"text":617},{"id":648,"depth":2448,"text":649},{"id":730,"depth":2448,"text":731},{"id":781,"depth":2448,"text":782},{"id":831,"depth":2448,"text":832},{"id":871,"depth":2448,"text":872},{"id":915,"depth":2448,"text":916},{"id":969,"depth":2448,"text":970},{"id":981,"depth":2441,"text":982,"children":2475},[2476,2477,2478,2479,2480,2481,2482,2483],{"id":985,"depth":2448,"text":986},{"id":1049,"depth":2448,"text":1050},{"id":1102,"depth":2448,"text":1103},{"id":1119,"depth":2448,"text":1120},{"id":1140,"depth":2448,"text":1141},{"id":1163,"depth":2448,"text":1164},{"id":1245,"depth":2448,"text":1246},{"id":1263,"depth":2448,"text":1264},{"id":1330,"depth":2441,"text":1331,"children":2485},[2486,2487,2488],{"id":1334,"depth":2448,"text":1335},{"id":1363,"depth":2448,"text":1364},{"id":1381,"depth":2448,"text":1382},{"id":1416,"depth":2441,"text":1417,"children":2490},[2491,2492,2493,2494,2495,2496,2497,2498,2499,2500,2501,2502,2503,2504,2505,2506],{"id":1420,"depth":2448,"text":1421},{"id":1461,"depth":2448,"text":1462},{"id":1485,"depth":2448,"text":1486},{"id":1583,"depth":2448,"text":1584},{"id":1678,"depth":2448,"text":1679},{"id":1890,"depth":2448,"text":1891},{"id":1905,"depth":2448,"text":1906},{"id":1975,"depth":2448,"text":1976},{"id":2028,"depth":2448,"text":2029},{"id":2091,"depth":2448,"text":2092},{"id":2189,"depth":2448,"text":2190},{"id":2266,"depth":2448,"text":2267},{"id":2316,"depth":2448,"text":2317},{"id":2326,"depth":2448,"text":2327},{"id":2413,"depth":2448,"text":2414},{"id":2428,"depth":2448,"text":2429},"StarRocks query performance tuning — EXPLAIN plans, Query Profile analysis, operator metrics, tuning recipes, schema optimization, query hints, and text-based profile analysis.","skill","md",{},true,"\u002Fplugins\u002Faio-starrocks\u002Faio-starrocks-query-tuning",{"title":5,"description":2507},"plugins\u002Faio-starrocks\u002Faio-starrocks-query-tuning","vS4omMACVvPKkUwHpR-ZUxJRk9xXhFJuyEW_Yp05uDA",[],1779712313881]