SQL Server DMV ve DMF – 6

Bu yazımızda DMV ve DMF Serimizin 6.sına devam edeceğiz. Bir önceki seride Memory’ye ilişkin DMV ve DMF’leri ele almıştık. Bu yazıda Memory konusunda devam edeceğiz. SQL server’da Memory kavramı en önemli kavramlardan biridir. Özellikle tüm transaction işlemlerinin önce Buffer sonra disk üzerinden devam ettiğini düşünürsek buffer’ın oynadığı kritik rolü daha iyi anlayabiliriz. Bu yazıda Memory’nin durumunu ve monitör edilmesine bakacağız. Özellikle Performans sorunlarında memory konusunda sorun yaşandığı durumda nasıl okumak gerektiği önemli rol oynamaktadır. Hangi database’de, hangi tablo’da sorun yaşandığına ilişkin bilgilere bu paylaşım sonrasında görebileceğiz. SQL Server’ın Memory kullanım durumunu incelediğimde; select physical_memory_in_use_kb/1048576.0 AS 'physical_memory_in_use (GB)', locked_page_allocations_kb/1048576.0 AS 'locked_page_allocations (GB)', virtual_address_space_committed_kb/1048576.0 AS 'virtual_address_space_committed (GB)', available_commit_limit_kb/1048576.0 AS 'available_commit_limit (GB)', page_fault_count as 'page_fault_count' from  sys.dm_os_process_memory; Görsel – 1   Physical_memory_in_use: Kullanımda olan Fiziksel Memory miktarını gösterir. locked_page_allocations: Memory’de lock’lanmış olan Page’lerin miktarını belirtir. virtual_address_space_contained: SQL Server VAS(Virtual Adress Space) için ayrılan miktarı belirtir. available_commit_limit: SQL Server tarafından kullanılabilecek Memory Miktarını gösterir. […]

SQL Server DMV ve DMF – 6

Bu yazımızda DMV ve DMF Serimizin 6.sına devam edeceğiz. Bir önceki seride Memory’ye ilişkin DMV ve DMF’leri ele almıştık. Bu yazıda Memory konusunda devam edeceğiz. SQL server’da Memory kavramı en önemli kavramlardan biridir. Özellikle tüm transaction işlemlerinin önce Buffer sonra disk üzerinden devam ettiğini düşünürsek buffer’ın oynadığı kritik rolü daha iyi anlayabiliriz.

Bu yazıda Memory’nin durumunu ve monitör edilmesine bakacağız. Özellikle Performans sorunlarında memory konusunda sorun yaşandığı durumda nasıl okumak gerektiği önemli rol oynamaktadır.

Hangi database’de, hangi tablo’da sorun yaşandığına ilişkin bilgilere bu paylaşım sonrasında görebileceğiz.

SQL Server’ın Memory kullanım durumunu incelediğimde;

select

physical_memory_in_use_kb/1048576.0 AS 'physical_memory_in_use (GB)',

locked_page_allocations_kb/1048576.0 AS 'locked_page_allocations (GB)',

virtual_address_space_committed_kb/1048576.0 AS 'virtual_address_space_committed (GB)',

available_commit_limit_kb/1048576.0 AS 'available_commit_limit (GB)',

page_fault_count as 'page_fault_count'

from  sys.dm_os_process_memory;

Görsel – 1

 

Physical_memory_in_use: Kullanımda olan Fiziksel Memory miktarını gösterir.

locked_page_allocations: Memory’de lock’lanmış olan Page’lerin miktarını belirtir.

virtual_address_space_contained: SQL Server VAS(Virtual Adress Space) için ayrılan miktarı belirtir.

available_commit_limit: SQL Server tarafından kullanılabilecek Memory Miktarını gösterir.

page_fault_count: Memory yerine Disk üzerinden getirilen Page’lerin sayısını gösterir. Bu oranın yüksek olması sistemde sorunlar sebebiyet verebilecektir.

 

Database Bazlı buffer pool kullanımına bakmak istersek;

DECLARE @total_buffer INT;

SELECT  @total_buffer = cntr_value

FROM   sys.dm_os_performance_counters

WHERE  RTRIM([object_name]) LIKE '%Buffer Manager'

AND counter_name = 'Database Pages';

 

;WITH DBBuffer AS

(

SELECT  database_id,

COUNT_BIG(*) AS db_buffer_pages,

SUM (CAST ([free_space_in_bytes] AS BIGINT)) / (1024 * 1024) AS [MBEmpty]

FROM    sys.dm_os_buffer_descriptors

GROUP BY database_id

)

SELECT

CASE [database_id] WHEN 32767 THEN 'Resource DB' ELSE DB_NAME([database_id]) END AS 'db_name',

db_buffer_pages AS 'db_buffer_pages',

db_buffer_pages / 128 AS 'db_buffer_Used_MB',

[mbempty] AS 'db_buffer_Free_MB',

CONVERT(DECIMAL(6,3), db_buffer_pages * 100.0 / @total_buffer) AS 'db_buffer_percent'

FROM   DBBuffer

ORDER BY db_buffer_Used_MB DESC;

Görsel – 2

db_name: Veritabanı adı.

db_buffer_pages: Veritabanındaki ilgili veritabanın Buffer Pool’da barındırdığı page sayısı.

db_buffer_Used_MB: MB cinsinden kullanılan veritabanı bazlı Buffer Pool boyutu

db_buffer_Free_MB: MB cinsinden veritabanı açısından Boş Buffer Pool Boyutu (tüm pagelerdeki boş alanın toplamı).

db_buffer_percent: Buffer Pool’un kullanımının veritabanı bazlı yüzdesi

 

Object Bazlı Buffer Pool Kullanımı;

SELECT fg.name AS [Filegroup Name], SCHEMA_NAME(o.Schema_ID) AS [Schema Name],

OBJECT_NAME(p.[object_id]) AS [Object Name], p.index_id,

CAST(COUNT(*)/128.0 AS DECIMAL(10, 2)) AS [Buffer size(MB)],

COUNT(*) AS [BufferCount], p.[Rows] AS [Row Count],

p.data_compression_desc AS [Compression Type]

FROM sys.allocation_units AS a WITH (NOLOCK)

INNER JOIN sys.dm_os_buffer_descriptors AS b WITH (NOLOCK)

ON a.allocation_unit_id = b.allocation_unit_id

INNER JOIN sys.partitions AS p WITH (NOLOCK)

ON a.container_id = p.hobt_id

INNER JOIN sys.objects AS o WITH (NOLOCK)

ON p.object_id = o.object_id

INNER JOIN sys.database_files AS f WITH (NOLOCK)

ON b.file_id = f.file_id

INNER JOIN sys.filegroups AS fg WITH (NOLOCK)

ON f.data_space_id = fg.data_space_id

WHERE b.database_id = CONVERT(int, DB_ID())

AND p.[object_id] > 100

AND OBJECT_NAME(p.[object_id]) NOT LIKE N'plan_%'

AND OBJECT_NAME(p.[object_id]) NOT LIKE N'sys%'

AND OBJECT_NAME(p.[object_id]) NOT LIKE N'xml_index_nodes%'

GROUP BY fg.name, o.Schema_ID, p.[object_id], p.index_id,

p.data_compression_desc, p.[Rows]

ORDER BY [BufferCount] DESC OPTION (RECOMPILE);

 

Görsel – 3

 

Benzer Yazılar

SQL Server DMV ve DMF – 7

SQL Server 8 saat önce

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) […]

INTEGRATION SERVICES KALDIRMA/KURMA ADIMLARI VE SENARYOLARI

SQL Server 2 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 4 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 – […]

0 Yorum

Yorum Yaz

Rastgele