verticapy.performance.vertica.qprof.QueryProfiler.get_qplan_explain¶
- QueryProfiler.get_qplan_explain(display_trees: bool = True) list¶
Returns the tree’s query explain plan as a
listof titles and trees.Note
A
EXPLAIN VERBOSEquery is executed.Parameters¶
- display_trees: bool, optional
If set to
True, prints the result before returning the final output.
Returns¶
- list
List of the different titles and trees.
Examples¶
First, let’s import the
QueryProfilerobject.from verticapy.performance.vertica import QueryProfiler
Then we can create a query:
qprof = QueryProfiler( "select transaction_id, statement_id, request, request_duration" " from query_requests where start_timestamp > now() - interval'1 hour'" " order by request_duration desc limit 10;" )
We can easily call the function to get the explain plan:
qprof.get_qplan_explain() <IPython.core.display.HTML object> <graphviz.sources.Source at 0x7fd389fa2320> <IPython.core.display.HTML object> <graphviz.sources.Source at 0x7fd389fa22f0> <IPython.core.display.HTML object> <graphviz.sources.Source at 0x7fd389fa16c0> <IPython.core.display.HTML object> <graphviz.sources.Source at 0x7fd389fa2350> <IPython.core.display.HTML object> <graphviz.sources.Source at 0x7fd389fa23b0> <IPython.core.display.HTML object> <graphviz.sources.Source at 0x7fd389fa2410> <IPython.core.display.HTML object> <graphviz.sources.Source at 0x7fd389fa3130> <IPython.core.display.HTML object> <graphviz.sources.Source at 0x7fd389fa2f20> <IPython.core.display.HTML object> Out[1]: ['------------------------------ \nQUERY PLAN DESCRIPTION: \n------------------------------\n\nOpt Vertica Options\n--------------------\nPLAN_OUTPUT_SUPER_VERBOSE\n\n\nEXPLAIN VERBOSE select transaction_id, statement_id, request, request_duration from query_requests where start_timestamp > now() - interval\'1 hour\' order by request_duration desc limit 10\n\n\nEnableUniquenessOptimization is on\nThe following JGNodes/Tables have been pruned due to uniqueness guarantee:\nSubquery for Node 0 (v_internal.dc_requests_issued):\n+-Node 1 de (v_internal.dc_errors)\n+-Node 2 ra (v_internal.dc_resource_acquisitions)\n+-Node 3 rs (v_internal.vs_sessions)\n\nAccess Path:\n+-SELECT LIMIT 10 [Cost: 62056.000000, Rows: 10.000000 Disk(B): 0.000000 CPU(B): 0.000000 Memory(B): 0.000000 Netwrk(B): 0.000000 Parallelism: 1.000000 (NO STATISTICS)] [OutRowSz (B): 64032] (PATH ID: 0)\n| Output Only: 10 tuples\n| Execute on: Query Initiator\n| LDISTRIB_UNSEGMENTED\n| +---> SORT [TOPK] [Cost: 62056.000000, Rows: 9999.000000 Disk(B): 0.000000 CPU(B): 8506381878.896563 Memory(B): 640255968.000000 Netwrk(B): 0.000000 Parallelism: 4.000000 (NO STATISTICS)] [OutRowSz (B): 64032] (PATH ID: 1)\n| | Order: query_requests.request_duration DESC\n| | Output Only: 10 tuples\n| | Execute on: All Nodes\n| | LDISTRIB_UNSEGMENTED\n| | Execute on: All Nodes\n| | LDISTRIB_SEGMENTED\n| | +---> JOIN HASH [LeftOuter] [Cost: 2321.000000, Rows: 9999.000000 Disk(B): 9828434.313137 CPU(B): 11438264.000000 Memory(B): 3039088.000000 Netwrk(B): 0.000000 Parallelism: 4.000000 (NO STATISTICS)] [OutRowSz (B): 64040] (PATH ID: 3)\n| | | Join Cond: (ri.node_name = dc_requests_completed.node_name) AND (ri.session_id = dc_requests_completed.session_id) AND (ri.request_id = dc_requests_completed.request_id)\n| | | Materialize at Output: ri."time", ri.transaction_id, ri.statement_id, ri.request\n| | | Execute on: All Nodes\n| | | LDISTRIB_SEGMENTED\n| | | +-- Outer -> STORAGE ACCESS for ri [Cost: 649.000000, Rows: 9999.000000 Disk(B): 0.000000 CPU(B): 0.000000 Memory(B): 0.000000 Netwrk(B): 0.000000 Parallelism: 4.000000 (NO STATISTICS)] [OutRowSz (B): 280] (PATH ID: 4)\n| | | | Column Cost Aspects: [ Disk(B): 9828925.734853 CPU(B): 2457600.000000 Memory(B): 2719720.003199 Netwrk(B): 0.000000 Parallelism: 4.000000 ]\n| | | | Projection: v_internal.dc_requests_issued_p\n| | | | Materialize: ri.node_name, ri.session_id, ri.request_id\n| | | | Filter: (ri."time" > \'2024-10-31 10:42:24.287859-04\'::timestamptz)/* sel=0.999800 ndv= 500 */\n| | | | Execute on: All Nodes\n| | | | LDISTRIB_SEGMENTED\n| | | +-- Inner -> STORAGE ACCESS for dc_requests_completed [Cost: 965.000000, Rows: 9997.000000 Disk(B): 0.000000 CPU(B): 0.000000 Memory(B): 0.000000 Netwrk(B): 0.000000 Parallelism: 4.000000 (NO STATISTICS)] [OutRowSz (B): 288] (PATH ID: 5)\n| | | | Column Cost Aspects: [ Disk(B): 14745600.000000 CPU(B): 0.000000 Memory(B): 5278944.134373 Netwrk(B): 0.000000 Parallelism: 4.000000 ]\n| | | | Projection: v_internal.dc_requests_completed_p\n| | | | Materialize: dc_requests_completed.request_id, dc_requests_completed."time", dc_requests_completed.node_name, dc_requests_completed.session_id\n| | | | Filter: (dc_requests_completed.node_name IS NOT NULL)/* sel=0.999800 ndv= 500 */\n| | | | Filter: (dc_requests_completed.session_id IS NOT NULL)/* sel=0.999800 ndv= 500 */\n| | | | Filter: (dc_requests_completed.request_id IS NOT NULL)/* sel=0.999800 ndv= 500 */\n| | | | Execute on: All Nodes\n| | | | LDISTRIB_SEGMENTED\n\n\n------------------------------\n----------------------------------------------- \nPlan Extras\n-----------------------------------------------', <graphviz.sources.Source at 0x7fd389fa2320>, 'Table Name -> JoinGraph Node Mappings: \nv_internal.dc_requests_issued: Node 0(JoinGraph ID: 1)\nv_internal.dc_requests_issued: Node 0(JoinGraph ID: 2)\nv_internal.dc_errors: Node 1(JoinGraph ID: 2)\nv_internal.dc_resource_acquisitions: Node 2(JoinGraph ID: 2)\nv_internal.vs_sessions: Node 3(JoinGraph ID: 2)\nv_internal.dc_requests_completed: Node 4(JoinGraph ID: 2)\nv_internal.dc_errors: Node 0(JoinGraph ID: 3)\nv_internal.dc_resource_acquisitions: Node 0(JoinGraph ID: 4)\nv_internal.vs_sessions: Node 0(JoinGraph ID: 5)\n\nJoin Descriptions: \n(v_internal.dc_requests_issued x v_internal.vs_sessions(JoinGraph ID: 2)\n(v_internal.dc_requests_issued x v_internal.dc_resource_acquisitions(JoinGraph ID: 2)\n(v_internal.dc_requests_issued x v_internal.dc_errors(JoinGraph ID: 2)\n(v_internal.dc_requests_issued x v_internal.dc_requests_completed(JoinGraph ID: 2)\n\n\nProjections chosen for tables: \nv_internal.dc_requests_issued: dc_requests_issued_p\nv_internal.dc_requests_completed: dc_requests_completed_p\n\nSimplified Join Order:\n-----------------------', <graphviz.sources.Source at 0x7fd389fa22f0>, '----------------------------------------------- \nPLAN: BASE QUERY PLAN (GraphViz Format)\n-----------------------------------------------', <graphviz.sources.Source at 0x7fd389fa16c0>, 'Estimated resources for plan:\n-----------------------------\nScratch Memory MB: 9149\nFile Handles: 28\nWorker Threads: 6\nBlocking Threads: 5\nExternalizing Ops: 0\nUnbounded Mem Ops: 1\nMax Threads: 72\n\nExtra Memory Reservation MB 9077\n-----------------------------\n----------------------------------------------- \nPLAN: ANNOTATED BY DISTRIBUTOR (GraphViz Format)\n-----------------------------------------------', <graphviz.sources.Source at 0x7fd389fa2350>, 'Estimated resources for plan:\n-----------------------------\nScratch Memory MB: 9149\nFile Handles: 28\nWorker Threads: 6\nBlocking Threads: 5\nExternalizing Ops: 0\nUnbounded Mem Ops: 1\nMax Threads: 72\n\nExtra Memory Reservation MB 9077\n-----------------------------\n----------------------------------------------- \nPLAN: INITIATOR NODE (GraphViz Format)\n-----------------------------------------------', <graphviz.sources.Source at 0x7fd389fa23b0>, 'Estimated resources for plan:\n-----------------------------\nScratch Memory MB: 9149\nFile Handles: 28\nWorker Threads: 6\nBlocking Threads: 5\nExternalizing Ops: 0\nUnbounded Mem Ops: 1\nMax Threads: 72\n\nExtra Memory Reservation MB 9077\n-----------------------------\n----------------------------------------------- \nPLAN: EXECUTOR NODE v_mldb_node0002 (GraphViz Format)\n-----------------------------------------------', <graphviz.sources.Source at 0x7fd389fa2410>, 'Estimated resources for plan:\n-----------------------------\nScratch Memory MB: 9149\nFile Handles: 24\nWorker Threads: 6\nBlocking Threads: 1\nExternalizing Ops: 0\nUnbounded Mem Ops: 1\nMax Threads: 72\n\nExtra Memory Reservation MB 9099\n-----------------------------\n----------------------------------------------- \nPLAN: EXECUTOR NODE v_mldb_node0003 (GraphViz Format)\n-----------------------------------------------', <graphviz.sources.Source at 0x7fd389fa3130>, 'Estimated resources for plan:\n-----------------------------\nScratch Memory MB: 9149\nFile Handles: 24\nWorker Threads: 6\nBlocking Threads: 1\nExternalizing Ops: 0\nUnbounded Mem Ops: 1\nMax Threads: 72\n\nExtra Memory Reservation MB 9099\n-----------------------------\n----------------------------------------------- \nPLAN: EXECUTOR NODE v_mldb_node0004 (GraphViz Format)\n-----------------------------------------------', <graphviz.sources.Source at 0x7fd389fa2f20>, 'Estimated resources for plan:\n-----------------------------\nScratch Memory MB: 9149\nFile Handles: 24\nWorker Threads: 6\nBlocking Threads: 1\nExternalizing Ops: 0\nUnbounded Mem Ops: 1\nMax Threads: 72\n\nExtra Memory Reservation MB 9099\n-----------------------------']
Note
For more details, please look at
QueryProfiler.