sqlschool.gr logo

articles

Articles of SQLschool.gr Team

The sys.dm_exec_query_optimizer_info DMV

Antonios Chatzipavlis
Saturday 02 January 2016

Θα ξεκινήσω την νέα αυτή χρονιά με ένα απλό και μικρό άρθρο αλλά που απαιτεί πολύ τριβή, διάβασμα και όρεξη να βουτήξει κανείς σε βαθιά και πολλές φορές αχαρτογράφητα ύδατα.

Είμαι σχεδόν σίγουρος ότι αν έκανα μια δημοσκόπηση με το ερώτημα αν κάποιος γνωρίζει το DMV που αναφέρω στον τίτλο του άρθρου αυτού το αποτέλεσμα θα ήταν συντριπτικά υπερ του όχι.

Το DMV αυτό σου δίνει μια πλειάδα από χρήσιμες πληροφορίες τις οποίες μπορείς να αξιοποιήσεις στην διερεύνηση θεμάτων που αφορούν απόδοση queries και το σημαντικότερο από όλα είναι ότι είναι πλήρως τεκμηριωμένο στα BOL.

Η χρηστικότητα του συγκεκριμένου DMV είναι διπλή.

Μπορεί να χρησιμοποιηθεί σε ένα παραγωγικό περιβάλλον σαν εργαλείο στατιστικής μέσα από το οποίο μπορούμε να δούμε στοιχεία όπως πόσα queries χρησιμοποιούν indexed views ή query hints ή περιέχουν subqueries ή κάνουν χρήση views ή κάνουν χρήση cursors και πολλά ακόμα.

Μπορεί όμως να χρησιμοποιηθεί και σαν εργαλείο για την βελτιστοποίηση ενός συγκεκριμένου query ή script. Σε αυτή όμως την περίπτωση θα πρέπει να χρησιμοποιηθεί σε ένα SQL Server instance που δεν έχει φόρτο (ιδανικά να είμαστε μόνοι μας) με τον εξής τρόπο

  1. Εκτελούμε το DMV και τα στοιχεία του τα αποθηκεύουμε κάπου πχ ένα excel ή temp table
  2. Εκτελούμε το query που θέλουμε να διερευνήσουμε 
  3. Εκτελούμε ξανά το DMV και συγκρίνουμε τα στοιχεία που αυτό δίνει σε αυτή την εκτέλεση με αυτά που είχαμε συλλέξει από την αρχική εκτέλεση

Για παράδειγμα
use AdventureWorks2014;
go

SELECT 1 as t,* into #qoi FROM sys.dm_exec_query_optimizer_info;
go

select * from Sales.SalesOrderHeader
where OrderDate>='20070101'
order by OrderDate desc;
go

insert into #qoi
SELECT 2,* FROM sys.dm_exec_query_optimizer_info;
go

select * from #qoi
order by 2,1;
go
Μελετώντας τα στοιχεία που μας δίνει το τελευταίο query θα είμαστε σε θέση να καταλάβουμε πως ακριβώς έχει συμπεριφερθεί ο query optimizer για το συγκεκριμένο execution

Καλη Χρονιά με υγεία πάντα.
/*antonch*/

Antonios Chatzipavlis

Antonios Chatzipavlis

Antonios Chatzipavlis is a highly experienced Data Solutions Consultant and Trainer. He has been working in the IT industry since 1988, holding various roles such as senior developer, IT Manager, Data & AI Solutions Architect and Consultant.

Since 1995, Antonios has focused on modern technologies and software development tools, primarily by Microsoft. He has specialized in Data & AI since 2000, with expertise in Microsoft Data Platform (SQL Server, Azure SQL Databases, Azure Synapse Analytics, Microsoft Fabric, Power BI, AI) and Databricks.

Antonios is also a Microsoft Certified Trainer (MCT) for over 25 years, has been recognized as a Microsoft Most Valuable Professional (MVP) in Data Platform since 2010 and he is in the Data Expert 40 Powerlist 2024 by Boussias. He is the co-founder and visionary behind XLYTiCA, a company dedicated to Data & AI solutions.

Episode

Task Flows in Microsoft Fabric

image

More Episodes...

Tip

Get Certified: Become a Fabric Data Engineer

More Tips...

Become a member

If you want to receive updates from us become a member to our community.

Connect

Explore

Learn

sqlschool.gr © 2010-2025 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.