Bu başlık altında SQL Server Performans tuning, monitoring, optimizasyon ve teşhis için kullanılan DMO (Dynamic Management Objects) olarak adlandırılan DMV (Dynamic Management Views) ve DMF’ler (Dynamic Management Functions) için serinin ilkine bakacağız. SQL Server 2005 öncesinde bunları kendi içinde tablolar ile yapmaktaydı 2005 ve sonrasında bunları DMV ve DMF ile sunmaya başladı.
Özellikle sistemde bir sorunla karşılaştığımızda bunu adreslemek istediğimizde ve çözüm için bize hint verebilecek en önemli yapı taşları DMV ve DMF’lerdir. Bu iki yapı doğru okunabilirse ve sorunu adreslemek ve çözmek için bizi iyi bir rehber olacaktır.
Dynamic Management View (DMV): Table gibi objectlerdir ve view olarak adlandırılırlar. Select komutu ile bu viewları okuyabiliriz.
Dynamic Management Function (DMF): Input parametresi alarak verilen bu parametreye göre sonucu bize döndürecektir. Kullanımı esnasında CROSS APPLY ile function kullanımı sağlanmaktadır.
SQL Server’da, Server ve Database kapsamında 2 tür DMV ve DMF vardır.
- Server kapsamında olanlar, server’a ilişkin bilgileri verir ve bu objelerin kullanılabilmesi için VIEW SERVER STATE yetkisine ihtiyaç vardır.
Örnek yetkilendirme:
GRANT VIEW SERVER STATE TO Login
- Database kapsamında olanlar ise database seviyesindeki bilgileri bize verirler. Bu objeleri kullanabilmek için ise VIEW DATABASE STATE yetkisine ihtiyaç vardır.
Örnek yetkilendirme:
GRANT VIEW DATABASE STATE TO User
Tüm DMV ve DMF’lerin neler olduğunu öğrenmek isterseniz aşağıdaki komut yardımı ile erişebilirsiniz.
SELECT name, type, type_desc FROM sys.system_objects WHERE name LIKE 'dm[_]%' ORDER BY name
Bu sonuç bize güncel olarak 324 sonuç getirdi. İlerleyen dönemlerde yeni gelecek özelliklere göre artma ve azalma gösterecektir.
DMV ve DMF’lerin, hangi kolonlara sahip olduğunu ve data tiplerinin neler olduğunu ve size bilgilerini öğrenmek istersek aşağıdaki komut yardımı ile bunları öğrenebiliriz.
SELECT so.name AS [DMV/DMF], sc.name AS [Column], t.name AS [Data Type], sc.column_id [Column Ordinal], sc.max_length, sc.PRECISION, sc.scale FROM sys.system_objects so INNER JOIN sys.system_columns sc ON so.OBJECT_ID = sc.OBJECT_ID INNER JOIN sys.types t ON sc.user_type_id = t.user_type_id WHERE so.name LIKE 'dm_%' ORDER BY so.name, sc.column_id
Tüm bu objelerin hepsi SQL Server’da kategorilere ayrılmıştır ve istediğimiz feature ile ilgili aramalarımızı kolaylaştırmak için belirli kelimeler ile bize sunmuştur.
- dm_broker_* – Service Broker
- dm_clr_* – Common Language Runtime (CLR)
- dm_db_* – Database
- dm_db_index_* – Indexes
- dm_db_mirroring_* – Database mirroring
- dm_exec_* – Execution (SQL Server Query)
- dm_fts_* – Full-Text Search
- dm_io_* – I/O
- dm_os_* – SQL Operating System (SQLOS)
- dm_qn_* – Query Notification
- dm_repl_* – Replication
- dm_tran_* – Transactions
- dm_xtp_* – Memory Optimized Table
- dm_hadr_* – High Availability Disaster Recovery (AlwaysON-FCI)
Bu yazımızda DMV ve DMF’lerin neler olduğu, genel olarak ne için kullanıldığını öğrenmiş olduk. Bir sonraki yazımızda spesifik DMV ve DMF’lere odaklanarak devam edeceğiz.
SQL Server DMV ve DMF – 3 - VERITABANI.ORGVERITABANI.ORG 14 Haziran 2024
[…] sys.dm_exec_ ile başlayanlar oldu. Bu DMC ve DMF’lere ilişkin bilgi almak isterseniz SQL Server DMV ve DMF – I adlı makaleyi okumanızı öneririm. Sorunu yaşadığım kaynak durumuna göre tespit etmek […]
SQL Server DMV ve DMF – 4 - VERITABANI.ORGVERITABANI.ORG 14 Haziran 2024
[…] İlişkin daha detaylı bilgiye sahip olmak isterseniz ya da önceki serileri okumak isterseniz. SQL Server DMV ve DMF – I ve SQL Server DMV – II makalelerine göz […]