SQL Server DMV ve DMF – 7

Bu yazıda SQL Server DMV ve DMF Serimizin 7.’sine devam edeceğiz. Bu başlık altında Memory özelinde çokça kullandığımız performans counter’lara göz gezdireceğiz. Ve bu çıktıların ne olduklarına bakacağız. Memory ile ilişkili Performance Counter’lara göz gezdirmek istediğimizde; -- Get size of SQL Server Page in bytes DECLARE @pg_size INT, @Instancename varchar(50) SELECT @pg_size = low from master..spt_values where number = 1 and type = 'E'   -- Extract perfmon counters to a temporary table IF OBJECT_ID('tempdb..#perfmon_counters') is not null DROP TABLE #perfmon_counters SELECT * INTO #perfmon_counters FROM sys.dm_os_performance_counters;   -- Get SQL Server instance name as it require for capturing Buffer Cache hit Ratio SELECT  @Instancename = LEFT([object_name], (CHARINDEX(':',[object_name]))) FROM    #perfmon_counters WHERE   counter_name = 'Buffer cache hit ratio';     SELECT * FROM ( SELECT  'Total Server Memory (GB)' as Cntr, (cntr_value/1048576.0) AS Value FROM    #perfmon_counters WHERE   counter_name = 'Total Server Memory (KB)' UNION ALL SELECT  'Target Server Memory (GB)', (cntr_value/1048576.0) […]

SQL Server DMV ve DMF – 7

Bu yazıda SQL Server DMV ve DMF Serimizin 7.’sine devam edeceğiz. Bu başlık altında Memory özelinde çokça kullandığımız performans counter’lara göz gezdireceğiz. Ve bu çıktıların ne olduklarına bakacağız.

Memory ile ilişkili Performance Counter’lara göz gezdirmek istediğimizde;

-- Get size of SQL Server Page in bytes

DECLARE @pg_size INT, @Instancename varchar(50)

SELECT @pg_size = low from master..spt_values where number = 1 and type = 'E'

 

-- Extract perfmon counters to a temporary table

IF OBJECT_ID('tempdb..#perfmon_counters') is not null DROP TABLE #perfmon_counters

SELECT * INTO #perfmon_counters FROM sys.dm_os_performance_counters;

 

-- Get SQL Server instance name as it require for capturing Buffer Cache hit Ratio

SELECT  @Instancename = LEFT([object_name], (CHARINDEX(':',[object_name])))

FROM    #perfmon_counters

WHERE   counter_name = 'Buffer cache hit ratio';

 

 

SELECT * FROM (

SELECT  'Total Server Memory (GB)' as Cntr,

(cntr_value/1048576.0) AS Value

FROM    #perfmon_counters

WHERE   counter_name = 'Total Server Memory (KB)'

UNION ALL

SELECT  'Target Server Memory (GB)',

(cntr_value/1048576.0)

FROM    #perfmon_counters

WHERE   counter_name = 'Target Server Memory (KB)'

UNION ALL

SELECT  'Connection Memory (MB)',

(cntr_value/1024.0)

FROM    #perfmon_counters

WHERE   counter_name = 'Connection Memory (KB)'

UNION ALL

SELECT  'Lock Memory (MB)',

(cntr_value/1024.0)

FROM    #perfmon_counters

WHERE   counter_name = 'Lock Memory (KB)'

UNION ALL

SELECT  'SQL Cache Memory (MB)',

(cntr_value/1024.0)

FROM    #perfmon_counters

WHERE   counter_name = 'SQL Cache Memory (KB)'

UNION ALL

SELECT  'Optimizer Memory (MB)',

(cntr_value/1024.0)

FROM    #perfmon_counters

WHERE   counter_name = 'Optimizer Memory (KB) '

UNION ALL

SELECT  'Granted Workspace Memory (MB)',

(cntr_value/1024.0)

FROM    #perfmon_counters

WHERE   counter_name = 'Granted Workspace Memory (KB) '

UNION ALL

SELECT  'Cursor memory usage (MB)',

(cntr_value/1024.0)

FROM    #perfmon_counters

WHERE   counter_name = 'Cursor memory usage' and instance_name = '_Total'

UNION ALL

SELECT  'Total pages Size (MB)',

(cntr_value*@pg_size)/1048576.0

FROM    #perfmon_counters

WHERE   object_name= @Instancename+'Buffer Manager'

and counter_name = 'Total pages'

UNION ALL

SELECT  'Database pages (MB)',

(cntr_value*@pg_size)/1048576.0

FROM    #perfmon_counters

WHERE   object_name = @Instancename+'Buffer Manager' and counter_name = 'Database pages'

UNION ALL

SELECT  'Free pages (MB)',

(cntr_value*@pg_size)/1048576.0

FROM    #perfmon_counters

WHERE   object_name = @Instancename+'Buffer Manager'

and counter_name = 'Free pages'

UNION ALL

SELECT  'Reserved pages (MB)',

(cntr_value*@pg_size)/1048576.0

FROM    #perfmon_counters

WHERE   object_name=@Instancename+'Buffer Manager'

and counter_name = 'Reserved pages'

UNION ALL

SELECT  'Stolen pages (MB)',

(cntr_value*@pg_size)/1048576.0

FROM    #perfmon_counters

WHERE   object_name=@Instancename+'Buffer Manager'

and counter_name = 'Stolen pages'

UNION ALL

SELECT  'Cache Pages (MB)',

(cntr_value*@pg_size)/1048576.0

FROM    #perfmon_counters

WHERE   object_name=@Instancename+'Plan Cache'

and counter_name = 'Cache Pages' and instance_name = '_Total'

UNION ALL

SELECT  'Page Life Expectency in seconds',

cntr_value

FROM    #perfmon_counters

WHERE   object_name=@Instancename+'Buffer Manager'

and counter_name = 'Page life expectancy'

UNION ALL

SELECT  'Free list stalls/sec',

cntr_value

FROM    #perfmon_counters

WHERE   object_name=@Instancename+'Buffer Manager'

and counter_name = 'Free list stalls/sec'

UNION ALL

SELECT  'Checkpoint pages/sec',

cntr_value

FROM    #perfmon_counters

WHERE   object_name=@Instancename+'Buffer Manager'

and counter_name = 'Checkpoint pages/sec'

UNION ALL

SELECT  'Lazy writes/sec',

cntr_value

FROM    #perfmon_counters

WHERE   object_name=@Instancename+'Buffer Manager'

and counter_name = 'Lazy writes/sec'

UNION ALL

SELECT  'Memory Grants Pending',

cntr_value

FROM    #perfmon_counters

WHERE   object_name=@Instancename+'Memory Manager'

and counter_name = 'Memory Grants Pending'

UNION ALL

SELECT  'Memory Grants Outstanding',

cntr_value

FROM    #perfmon_counters

WHERE   object_name=@Instancename+'Memory Manager'

and counter_name = 'Memory Grants Outstanding'

UNION ALL

SELECT  'process_physical_memory_low',

process_physical_memory_low

FROM    sys.dm_os_process_memory WITH (NOLOCK)

UNION ALL

SELECT  'process_virtual_memory_low',

process_virtual_memory_low

FROM    sys.dm_os_process_memory WITH (NOLOCK)

UNION ALL

SELECT  'Max_Server_Memory (MB)' ,

[value_in_use]

FROM    sys.configurations

WHERE   [name] = 'max server memory (MB)'

UNION ALL

SELECT  'Min_Server_Memory (MB)' ,

[value_in_use]

FROM    sys.configurations

WHERE   [name] = 'min server memory (MB)'

UNION ALL

SELECT  'BufferCacheHitRatio',

(a.cntr_value * 1.0 / b.cntr_value) * 100.0

FROM    sys.dm_os_performance_counters a

JOIN (SELECT cntr_value,OBJECT_NAME FROM sys.dm_os_performance_counters

WHERE counter_name = 'Buffer cache hit ratio base' AND

OBJECT_NAME = @Instancename+'Buffer Manager') b ON

a.OBJECT_NAME = b.OBJECT_NAME WHERE a.counter_name = 'Buffer cache hit ratio'

AND a.OBJECT_NAME = @Instancename+'Buffer Manager'

) AS D;

 

Total Server Memory: SQL Server’ın ne kadar Memory kullandığını gösterir.

Target Server Memory: Bu değer, SQL Server’ın ne kadar Memory almaya çalıştığını gösterir. SQL Server için maksimum sunucu belleği değerini yapılandırmadıysanız Target Server Memory miktarı, Total Server Memory belleğinden yaklaşık 5 MB daha az olacaktır. Bu değer büyük sistemler için yetersiz kalabilir.

Connection Memory (GB): Server’ın Connection’ları devam ettirebilmek için kullandığı toplam dinamik bellek miktarını belirtir.

Lock Memory  (GB): Server’ın lock Page’ler için kullandığı toplam memory miktarını gösterir.

SQL Cache Memory: Dinamik SQL cümlecikleri için ayrılan toplam bellek.

Optimizer Memory: Sorgu optimizasyonu için ayrılan bellek.

Granted Workspace Memory: hash, sort, bulk copy, ve index oluşturma operasyonları için halihazırda verilen memory miktarı.

Cursor memory usage: Cursor’lar için kullanılan memory miktarı.

Free pages: SQL Server tarafından taahhüt edilen ancak şu anda kullanılmayan page’lerdeki boş alan miktarı.

Reserved Pages: Buffer Pool’da reserve edilmiş page’lerin sayısını gösterir.

Stolen pages (MB): SQL Server tarafından kullanılan ancak Veritabanı page’leri için kullanılmayan bellek. sort veya hash işlemleri için veya locklar, transactionlar ve connection bilgileri gibi veri yapılarını depolamak için kullanılır.

Cache Pages: Cache’deki 8 KB’lık page sayısı.

Page life expectancy: içinde data bulunduran page’lerin, diğer page’lere yer açmak üzere boşaltılmadan önce buffer cache’de ortalama ne kadar süre kalacağını gösterir. Bu değer her 4 GB Memory için 300 ila 600 arasında olması gerekmektedir.

Free list stalls / sec: Free Page’ye yönelik talebin, kullanılabilir hale gelene kadar beklemek zorunda kaldığı süre.

Checkpoint Pages/sec: Chekpoint prosesi esnasında saniyede buffer’dan commit olan page sayısını gösterir.

Lazy writes / sec: Chekpoint operasyonu bekliyorken, buffer cache’de yer alan dirty page’lerin saniyede kaç kez temizlenmesi gerektiği bilgisini gösterir.

Memory Grants Outstanding: Memory’e başarılı olarak alınan process’lerin sayısı. Değerin yüksek olması user processlerin fazla olduğunu gösterir.

Memory Grants Pending: Memory’ alınmak üzere bekleyen process’lerin sayısı. Değerin yüksek olması SQL Server’ın ek memory ihtiyacı olduğunu gösterir.

process_physical_memory_low: düşük fiziksel memory durumunun tespit edildiğini bildirir. Değerin 0 olması Memory pressure olmadığını gösterir.

proses_virtual_memory_low: Düşük sanal memory durumunun tespit edildiğini belirtir. Değerin 0 olması Memory pressure olmadığını gösterir.

Min Server Memory: SQL Server’ın alması gereken minimum memory miktarı gösterir.

Max Server Memory: SQL Server’ın işletim sisteminden alabileceği maksimum memory miktarını gösterir. Default değer 2147483647 olarak gelir.

Buffer cache hit ratio: Diskten okumaya gerek kalmadan arabellek havuzunda bulunan sayfaların yüzdesi. Bu oran’ın %100 değerlerine yakın olması memory dar boğazı olmadığını gösterir. %95 altında olması durumun memory dar boğazı yaşanabilir.

 

Benzer Yazılar

INTEGRATION SERVICES KALDIRMA/KURMA ADIMLARI VE SENARYOLARI

SQL Server 1 gün önce

Bu makalede SQL Server Integration Services kurulu olan bir ortamdan servisi kaldırma adımlarından ve bunun mevcuttaki ortama olan etkilerinden bahsedeceğim. Bizler genel olarak kurulum ve bu kurulumların adımları ilgileniriz ancak bugün bunun tam tersi mevcutta SQL Server 2019 kurulu olan bir servisi kaldıracağız. Denetim masası (Control Panel) > Programs > Programs and Features Adımları ile mevcut ortamda kurulu olan uygulamaları görüntüledikten sonra “Microsoft SQL Server 2019” tıklayarak “Uninstall/Changes” tıklıyoruz. Görsel – 1 Karşımıza SQL Server ne yapmak istediğimizi soruyor biz bir servis kaldıracağımız için “Remove” diyerek ilerliyoruz. Görsel – 2 Yapmak istediğimiz işlemi hangi Instance üzerinde yapacağımızı soruyor, ben “TEST” Instance da yapacağım seçerek ilerliyorum. Görsel – 3 Şimdide Bu Instance üzerinde neyi kaldırabileceğimi bana gösteriyor, ben Integration Services kaldıracağım için Shared Features menüsü altında bulunan Integration Services seçiyorum burada unutulmaması gereken bir şey var eğer Shared Features altında bulunan bir service kaldırır veya kurarsanız bundan sadece seçili olan Instance […]

VISUAL STUDIO SSIS PACKAGE TOOLS

ETL 3 hafta önce

Bu makalede Visual Studio ile hazırlayacağınız SSIS packages kullanılan araçlardan ve birkaç farklı bakış açısından bahsedeceğim. Birçok işte olduğu SSIS package hazırlarken de kendi kurum ve kurumlarımızın ihtiyaç ve planlarına yönelik olarak yapabileceklerimizi kendimize göre ayarlayabiliriz. Görsel – 1 Bir Execute SQL Task ile yapabileceklerimizden birkaç tanesine birlikte bakalım. Görsel – 2 SQLSourceType kısmında kullanabileceğimiz 3 farklı seçenek bulunmaktadır, Direct input: SQL sorgusunu doğrudan SQLStatement kısmına yazabilmemizi sağlar. File connection: Kaydetmiş olduğunuz bir SQL komut dosyasınızı FileConnection ‘dan direk sorgularınızın çalıştırılmasını sağlar. Variable: Variables olarak belirlemiş olduğunuz ve bu menüden kontrolünü sağlayarak görüntüleyebileceğiniz bir değişkeninizden SourceVariable kısmında belirterek çalıştırılmasını sağlar. Belirlemiş olduğunuz SQLSourceType ile SQL Task Execute olduğunda direk bir sonraki adıma geçebilir veya buradaki çıktınızı “Result Set” kısmında bir değişkene de atıyabilirsiniz. SSIS Toolbox içerisinde bulunan Containers sekmesinden farklı Container çeşitleri bulunmaktadır bunlardan biri olan For Loop Container ‘a göz atalım.   Görsel –3 Görsel – 4 Görsel – […]

SQL SERVER RIGHT-LEFT PARTITION

SQL Server 1 ay önce

SQL Server’da partitioning, büyük veritabanı tablolarını daha yönetilebilir ve performanslı hale getirmek amacıyla kullanılan bir tekniktir. Bu teknik, tablonun verilerini fiziksel olarak değil, mantıksal olarak parçalara ayırır. Veriler, belirli bir partition function ve partition scheme kullanılarak farklı bölümlere yönlendirilir. Partitioning, özellikle büyük veri kümeleriyle çalışan veri tabanlarında sorgu performansını artırır ve veri yönetimini kolaylaştırır. Partition Function ve Partition Scheme nedir? Partition Function: Verilerin hangi kriterlere göre bölüneceğini belirler. Örneğin, bir tarih aralığına göre verileri ayırmak. Partition Scheme: Verilerin hangi filegroup’larda depolanacağını belirler.   Örnek olarak Range LEFT ve Range RIGHT olmak üzere iki ayrı tabloda partition nasıl yapılır sizlere göstereceğim. İlk olarak Range LEFT olan partition yapısından başlayacağım. Öncelikle Veri tabanıma yeni filegroup ve file ekliyorum Şimdi sıra FUNCTION ve SCHEME oluşturmakta ben tablomu yıllık olarak partition yaptım sizler ihtiyaçlarınız doğrultusunda aylık,günlük vs yapabilirsiniz. LEFT partition dediğimiz olay vermiş olduğunuz tarih aralığına eşit bir veri geldiğinde bu veriyi solundaki partition […]

0 Yorum

Yorum Yaz

Rastgele