MSSQL Server Incremental Statistics

Incremental Statistics veritabanı üzerinde partition yapısında olan tablo üzerinde istatistiklerin partition bazında güncellenmesi işlemidir. Büyük boyutlu veritabanlarımızda istatistikleri partition bazında güncelleştirmek istatistiklerin sisteme getireceği yükü azaltabiliriz.

Veritabanımızda partition yapısında olan bir tablomuz varsa tablonun olduğu veritabanı üzerine sağ tıklayıp properties>options bölümünde Auto Create Incremental Statistics’i True yapabiliriz.

Şimdi partition yapısında olan tablomuzun bulunduğu veritabanında bu özelliği açalım. Yukarıda belirttiğim bölümden  Auto Create Incremental Statistics true yapılır.

Yukarıdaki işlemin script’i:

USE [master]
GO
ALTER DATABASE [PARTITIONDB] SET AUTO_CREATE_STATISTICS ON(INCREMENTAL = ON)
GO

Artık partition tablomuzda tablomuz %20 değiştiğinde tablomuz partition bazında istatistikleri güncelleme işlemi yapacaktır.

Aşağıdaki komutla manuel bir şekilde istatistikleri partition bazında güncelleyebiliriz.

UPDATE STATISTICS [PARTITIONDB].[dbo].[ORNEKTABLO]([ClusteredIndex-20241221-202513]) WITH RESAMPLE ON PARTITIONS(1)

İlgili komutu çalıştırdığımızda aşağıdaki gibi bir hata mesajıyla karşılaşırız.

Msg 9111, Level 16, State 1, Line 1

UPDATE STATISTICS ON PARTITIONS syntax is not supported for non-incremental statistics.

Aşağıdaki komut ile bir PARTITION tabloyu incremantal yapıya geçirebiliriz. Tablo altındaki tüm indexsleri incremental yapıya geçiriyoruz. İncremental=off yaparsak istatistikler incremental yapıdan çıkmış olur.

UPDATE STATISTICS [DB_NAME].[SCHEME_NAME].[TABLE_NAME] WITH INCREMENTAL = ON

UPDATE STATISTICS [PARTITIONDB].[dbo].[ORNEKTABLO] WITH INCREMENTAL = ON

Artık tablodaki ilgili istatistikleri partition bazında güncelleyebiliriz.

UPDATE STATISTICS [PARTITIONDB].[dbo].[ORNEKTABLO]([ClusteredIndex-20241221-202513]) WITH RESAMPLE ON PARTITIONS(3)

Aşağıdaki komut ile veritabanı altında bulunan ilgili istatistiğin incremental yapıda olup olmadığını görebiliriz. 1 incremental yapının aktif olduğunu görmekteyiz.

USE [PARTITIONDB]
GO
SELECT
    OBJECT_NAME(object_id) TableName
   ,name
   ,is_incremental
   ,stats_id
FROM sys.stats
WHERE name like   '_WA%' and  is_incremental=1

Aşağıdaki komut ile ilgili istatistikteki incremental yapıyı kapatabiliriz.

UPDATE STATISTICS [PARTITIONDB].[dbo].[ORNEKTABLO]([_WA_Sys_00000003_35BCFE0A]) WITH INCREMENTAL = off

Hangi veritabanı altında partition yapısında tablomuz varsa bu özellik açılır. Herhangi bir sakıncası yoktur. partition yapısında olan tablomuzun bulunduğu veritabanı herhangi bir index jobına dahil edilirse partition tabloda sadece partition level seviyesinde index bakımı yapılmaktadır. Tüm tablo üzerinde yapılmaz. Olahallangren stored procedure incelenirse bu yapının default olduğu gözlemlenir.

Bu makalede MSSQL Server İncremental istatistik yapısını görmüş olduk. Başka bir makalede görüşmek dileğiyle.

Gerçekten Allah’ın Kitab’ını okuyanlar, namazı dosdoğru kılanlar ve kendilerine rızık olarak verdiklerimizden gizli ve açık infak edenler; kesin olarak zarara uğramayacak bir ticareti umabilirler. Fatır Suresi, 29. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir