Değişen Veritabanı Uyumluluk Düzeyinin Önbellek Üzerindeki Etkisi SQL Server dünyasında, veritabanı uyumluluk düzeyi, sorgu yürütme ve yürütme planlarını optimize etme söz konusu olduğunda bir veritabanının nasıl davranacağını belirlemede hayati bir rol oynar. SQL Server, her yeni sürümde yeni algoritmalar ve geliştirmeler benimseyerek sürekli olarak performansı ve sorgu optimizasyonunu iyileştirmeye çalışır. Sonuç olarak, en son özelliklerden ve iyileştirmelerden yararlanmak için uyumluluk düzeyini değiştirmek gerekli hale gelir. Bu blog gönderimizde, uyumluluk düzeyini değiştirmenin sorgu önbelleğini nasıl etkilediğini ve etkisinin farkında olmanın neden önemli olduğunu beraber keşfedeceğiz. Bu tartışmayı genellikle Kapsamlı Veritabanı Healt Check Kontrolü sırasında yaparız. Önbellek Yönetimi ve Sorgu Optimizasyonu: Anlama ve Uygulama Uyumluluk düzeyini değiştirmenin etkilerine dalmadan önce, SQL Server’daki sorgu önbelleğini kısaca tartışalım. Plan önbelleği olarak da bilinen sorgu önbelleği, SQL Server sorgu iyileştiricisi tarafından oluşturulan yürütme planlarını depolar. Bir sorgu yürütüldüğünde, SQL Server önce söz konusu sorgu için mevcut bir yürütme planı olup olmadığını görmek için önbelleği kontrol eder. Bulunursa, önbelleğe alınan plan kullanılır ve yeni bir plan oluşturma ek yükünden tasarruf edilir. Bu, sorgu performansını önemli ölçüde artırır ve sorgu işleme süresini azaltır. Örnek Yürütme Planları Oluşturma: Uyumluluk düzeyini değiştirmenin etkisini göstermek için, AdventureWorks2019 veritabanındaki sorgular için bazı örnek yürütme planları oluşturalım.
USE AdventureWorks2019; — Query 1 SELECT p.ProductID, p.Name AS ProductName, c.Name AS CategoryName FROM Production.Product AS p JOIN Production.ProductSubcategory AS sc ON p.ProductSubcategoryID = sc.ProductSubcategoryID JOIN Production.ProductCategory AS c ON sc.ProductCategoryID = c.ProductCategoryID; GO 5 — Query 2 SELECT SalesOrderID, SUM(LineTotal) AS TotalSalesAmount FROM Sales.SalesOrderDetail GROUP BY SalesOrderID; GO 5 — Query 3 SELECT p.ProductID, p.Name AS ProductName, AVG(sod.OrderQty) AS AvgOrderQuantity, SUM(sod.LineTotal) AS TotalSalesAmount FROM Production.Product AS p JOIN Sales.SalesOrderDetail AS sod ON p.ProductID = sod.ProductID GROUP BY p.ProductID, p.Name; GO 5
  Önbellek Durumunu Kontrol Etme: Ardından, aşağıdaki sorguları kullanarak önbellek durumunu inceleyelim:  
USE AdventureWorks2019; — Check the buffer cache usage SELECT COUNT(*) AS CachedPagesCount, COUNT(*) * 8 / 1024 AS CachedSizeMB FROM sys.dm_os_buffer_descriptors WHERE database_id = DB_ID(); GO — Check the plan cache usage SELECT objtype AS CacheObjectType, COUNT(*) AS CachedPlansCount, SUM(size_in_bytes) / 1024 AS CachedSizeKB FROM sys.dm_exec_cached_plans GROUP BY objtype; GO — Check the procedure cache usage SELECT cacheobjtype AS CacheObjectType, COUNT(*) AS CachedObjectsCount FROM sys.dm_exec_cached_plans GROUP BY cacheobjtype; GO
  İşte göreceğimiz sonuç aşağıda verilmiştir. Uyumluluk Düzeyini Değiştirmenin Etkisi: Şimdi, aşağıdaki sorguları kullanarak uyumluluk düzeyini değiştirmeye geçelim:  
— For SQL Server 2019: ALTER DATABASE [AdventureWorks2019] SET COMPATIBILITY_LEVEL = 150; GO
  Burada 150, SQL Server 2019 anlamına gelir. Uyumluluk seviyesini SQL Server 2022 olarak değiştirmek isterseniz 150 yerine 160 kullanabilirsiniz. Aynı şekilde SQL Server 2017 için de 140 kullanabilirsiniz. Uyumluluk seviyesini değiştirip sorgu önbelleğini tekrar kontrol ettiğinizde, neredeyse boş olduğunu göreceksiniz. Analiz ve Sonuç Sonuç olarak, bir SQL Server veritabanının uyumluluk düzeyi, sorgu optimizasyon davranışını ve performansını belirlemede çok önemli bir rol oynar. Uyumluluk düzeyini değiştirmek, önbelleğe alınan yürütme planlarını etkileyebilir ve dolayısıyla genel sorgu performansını etkileyebilir. Kapsamlı Veritabanı Performansı Healt Check’in bir parçası olarak, müşterilerimizin SQL Server veritabanlarının tüm potansiyelinden yararlanmalarını sağlamak için her zaman veritabanı uyumluluk düzeyini göz önünde bulundururuz.  

Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz!

İletişime geçerek hemen destek alabilirsiniz.

İletişim