@@ -137,8 +137,16 @@ impl QueryPlanner for QueryPlannerImpl {
137137 inline_tables : & InlineTables ,
138138 trace_obj : Option < String > ,
139139 ) -> Result < QueryPlan , CubeError > {
140+ let pre_execution_context_time = SystemTime :: now ( ) ;
140141 let ctx = self . execution_context ( ) ?;
141142
143+ let post_execution_context_time = SystemTime :: now ( ) ;
144+ app_metrics:: DATA_QUERY_LOGICAL_PLAN_EXECUTION_CONTEXT_TIME_US . report (
145+ post_execution_context_time
146+ . duration_since ( pre_execution_context_time) ?
147+ . as_micros ( ) as i64 ,
148+ ) ;
149+
142150 let state = Arc :: new ( ctx. state ( ) ) ;
143151 let schema_provider = MetaStoreSchemaProvider :: new (
144152 self . meta_store . get_tables_with_path ( false ) . await ?,
@@ -150,7 +158,20 @@ impl QueryPlanner for QueryPlannerImpl {
150158 ) ;
151159
152160 let query_planner = SqlToRel :: new_with_options ( & schema_provider, sql_to_rel_options ( ) ) ;
161+
162+ let pre_statement_to_plan_time = SystemTime :: now ( ) ;
153163 let mut logical_plan = query_planner. statement_to_plan ( statement) ?;
164+ let post_statement_to_plan_time = SystemTime :: now ( ) ;
165+ app_metrics:: DATA_QUERY_LOGICAL_PLAN_QUERY_PLANNER_SETUP_TIME_US . report (
166+ pre_statement_to_plan_time
167+ . duration_since ( post_execution_context_time) ?
168+ . as_micros ( ) as i64 ,
169+ ) ;
170+ app_metrics:: DATA_QUERY_LOGICAL_PLAN_STATEMENT_TO_PLAN_TIME_US . report (
171+ post_statement_to_plan_time
172+ . duration_since ( pre_statement_to_plan_time) ?
173+ . as_micros ( ) as i64 ,
174+ ) ;
154175
155176 // TODO upgrade DF remove
156177 trace ! (
@@ -170,8 +191,12 @@ impl QueryPlanner for QueryPlannerImpl {
170191
171192 let logical_plan_optimize_time = SystemTime :: now ( ) ;
172193 logical_plan = state. optimize ( & logical_plan) ?;
173- app_metrics:: DATA_QUERY_LOGICAL_PLAN_OPTIMIZE_TIME_MS
174- . report ( logical_plan_optimize_time. elapsed ( ) ?. as_millis ( ) as i64 ) ;
194+ let post_optimize_time = SystemTime :: now ( ) ;
195+ app_metrics:: DATA_QUERY_LOGICAL_PLAN_OPTIMIZE_TIME_US . report (
196+ post_optimize_time
197+ . duration_since ( logical_plan_optimize_time) ?
198+ . as_micros ( ) as i64 ,
199+ ) ;
175200 trace ! (
176201 "Logical Plan: {}" ,
177202 pp_plan_ext(
@@ -187,34 +212,36 @@ impl QueryPlanner for QueryPlannerImpl {
187212 )
188213 ) ;
189214
215+ let post_is_data_select_query_time: SystemTime ;
190216 let plan = if SerializedPlan :: is_data_select_query ( & logical_plan) {
191217 let choose_index_ext_start = SystemTime :: now ( ) ;
218+ post_is_data_select_query_time = choose_index_ext_start;
192219 let ( logical_plan, meta) = choose_index_ext (
193220 logical_plan,
194221 & self . meta_store . as_ref ( ) ,
195222 self . config . enable_topk ( ) ,
196223 )
197224 . await ?;
198- let choose_index_ext_end = SystemTime :: now ( ) ;
199225 let workers = compute_workers (
200226 self . config . as_ref ( ) ,
201227 & logical_plan,
202228 & meta. multi_part_subtree ,
203229 ) ?;
204- app_metrics:: DATA_QUERY_CHOOSE_INDEX_TIME_MS . report (
205- choose_index_ext_end
206- . duration_since ( choose_index_ext_start) ?
207- . as_millis ( ) as i64 ,
208- ) ;
209- app_metrics:: DATA_QUERY_CHOOSE_INDEX_AND_WORKERS_TIME_MS
210- . report ( choose_index_ext_start. elapsed ( ) ?. as_millis ( ) as i64 ) ;
230+ app_metrics:: DATA_QUERY_CHOOSE_INDEX_AND_WORKERS_TIME_US
231+ . report ( choose_index_ext_start. elapsed ( ) ?. as_micros ( ) as i64 ) ;
211232 QueryPlan :: Select (
212233 PreSerializedPlan :: try_new ( logical_plan, meta, trace_obj) ?,
213234 workers,
214235 )
215236 } else {
237+ post_is_data_select_query_time = SystemTime :: now ( ) ;
216238 QueryPlan :: Meta ( logical_plan)
217239 } ;
240+ app_metrics:: DATA_QUERY_LOGICAL_PLAN_IS_DATA_SELECT_QUERY_US . report (
241+ post_is_data_select_query_time
242+ . duration_since ( post_optimize_time) ?
243+ . as_micros ( ) as i64 ,
244+ ) ;
218245
219246 Ok ( plan)
220247 }
0 commit comments