Ay: Şubat 2019

PostgreSQL AWR

PostgreSQL AWR

PostgreSQL de yoğunluk, dar boğaz yada daha farklı olaylarda  cluster ve veritabanı bazlı inceleme yapmanız için birden fazla şeyleri incelemeniz gerekebilir. Performans sorunu yaşandığını düşünürsek  bu sorunun tespiti için indexlerin kullanılıp kullanılmadığını  ,I/O ,cpu gibi şeyleri inceleriz .Bunlar için tek tek sorgu yazmamız ve tek tek incelememiz gerekir .Bu işlemleri yapmaktansa hepsini bir arada toplayıp html formatında çıktısını veren pg_profile extensionını kullanabiliriz.

Pg_profile extension’ı PostgreSQL ‘in standart istatistik görünümlerine dayanmaktadır. Pl/pgsql ile yazılmıştır .Çalışma mantığı olarak Oracle AWR mimarisine benzemektedir. Oracle da ki gibi belirlenen zamanlarda snapshot alır ve bu snapshotlar arasında ki istatistiksel verileri yorumlamak için size html formatında verir.

Kısa bilgiden sonra  nasıl kurabiliriz ve bunu nasıl sistemimize uyarlayabiliriz onu anlatalım.

Kuruluma geçmeden önce postgresql.conf da bazı konfigurasyonları yapmamız gerekiyor .Bunları aşağıdaki gibi ayarlayabiliriz.

İstatistikleri toplamak için postgresql.conf üzerinden değiştirmemiz gerekir.

track_activities = on

track_counts = on

track_io_timing = on

track_functions = on

Yukarıdaki adımlar yapıldıktan sonra pg_stat_statements parametrelerini değiştiriyoruz.

shared_preload_libraries = 'pg_stat_statements'

pg_stat_statements.max = 1000

pg_stat_statements.track = 'top'

pg_stat_statements.save = off

İlk olarak github da belirtilen pg_profile extensionını aşağıdaki linkten indirmemiz gerekiyor.

https://github.com/zubkov-andrei/pg_profile

Sunucuya ilgili dosyayı indirdikten sonra klasorün içine girerek aşağıdaki adımları izliyoruz.

Make komutunu çalıştırıyoruz.

make install

Bu işlemi yaparken aşağıdaki gibi hata alıyorsanız aşağıdaki gibi path parametresinin sonunda make install yazarak yapabilirsiniz.

PATH=/usr/pgsql-10/bin:$PATH  make install

Make install komutunu çalıştırdık ve gerekli konfigurasyonları yaptıysak psql client’ı ile PostgreSQL e bağlanarak extensionları aşağıdaki gibi oluşturabiliriz.

CREATE EXTENSION dblink;

CREATE EXTENSION pg_stat_statements;

CREATE SCHEMA profile;

Pg_profile sekmesinde oluşturulacak bütün nesnelerin profile şemasında oluşturulması için aşağıdaki komutu çalıştırabiliriz.

CREATE EXTENSION pg_profile SCHEMA profile;

Extension’ı güncellemek içinde aşağıdaki komuttan yararlanabilirsiniz.

alter extension pg_profile update;

Yukarıda bahsettiğim gibi pg_profile’ın çalışma mantığı  belirlenen zamanlarda snapshot alır ve bu snapshotlar arasında ki istatistiksel verileri yorumlamak için size html formatında verir. Bundan dolayı crontab a snapshot functionlarını aşağıdaki gibi eklememiz gerekiyor. Ben yarım saatte bir alacak şekilde ayarladım fakat siz daha kısa süreli yapabilirsiniz.

Crontab -e ile crontabı açıyoruz ve aşağıdaki komutları ekliyoruz.

*/30 * * * *   psql -c 'SELECT profile.snapshot()' > /var/log  2>&1

*/30 * * * *   psql -c 'SELECT snapshot()' > /var/log  2>&1

Yukarıdaki komutta logları var/log dizinin altına yazmasını istedim isterseniz siz değiştirebilirsiniz.Aşağıdaki komut yardımı ile belirtilen saatten önce snapshot alabilirsiniz.

psql -c 'SELECT profile.snapshot()'

Aşağıdaki komut yardımı ile aldığınız snapshotları görüntüleyebilirsiniz.

select*from snapshot_show();

Snapshotları aldıktan sonra aşağıdaki komut yardımı ile alınan snapshotları listeleyebiliriz.

AWR raporu şeklinde listelemek içinde aşağıdaki komutu kullanabiliriz.outputtan sonra path belirtip oraya yazdırabilirsiniz hiç bir şey verilmezse bulunduğunuz dizine oluşturur.

 psql -qtc "SELECT profile.report(1,8)" --output awr_report_postgres_1_8.html

Yukarıdaki scriptin çıktısı aşağıdaki gibi olacaktır.

 851 total views

MSSQL ,Veritabanı Bazlı CPU Kullanım Oranları

MSSQL ,Veritabanı Bazlı CPU Kullanım Oranları

MSSQL  instance , veritabanı,sorgu bazlı  cpu kullanım oranlarını çıkarabiliriz. Aşağıdaki T_SQL de veritabanı bazlı cpu kullanım oranlarını listeleyebiliriz.

WITH CPU_Kullanım_Oranları
AS
(SELECT 
 dmpa.DatabaseID
, DB_Name(dmpa.DatabaseID) AS [Database]
, SUM(dmqs.total_worker_time) AS CPUTimeAsMS
FROM sys.dm_exec_query_stats dmqs 
 CROSS APPLY 
 (SELECT 
 CONVERT(INT, value) AS [DatabaseID] 
 FROM sys.dm_exec_plan_attributes(dmqs.plan_handle)
WHERE attribute = N'dbid') dmpa
GROUP BY dmpa.DatabaseID)

 SELECT 
 [Database] 
 ,[CPUTimeAsMS] 
 ,CAST([CPUTimeAsMS] * 1.0 / SUM([CPUTimeAsMS]) OVER() * 100.0 AS DECIMAL(5, 2)) AS [CPUTimeAs%]
FROM CPU_Per_Db
ORDER BY [CPUTimeAs%] DESC;

 

MSSQL Veritabanı Bazlı Memory Kullanım Oranları

MSSQL Veritabanı Bazlı Memory Kullanım Oranları

MSSQL de instance, veritabanı ve sorgu bazlı kullanım oranlarını listeleyebiliriz.

Aşağıdaki T-SQL ‘i çalıştırdığınızda veritabanı bazlı Memory kullanım oranlarını listeleyecektir

SELECT DB_NAME(database_id) AS [Database Name],
COUNT(*) * 8/1024.0 AS [Cached Size (MB)]
FROM sys.dm_os_buffer_descriptors
WHERE database_id > 4 -- sistem veritabanlarını dahil etmemesi için
GROUP BY DB_NAME(database_id) 
ORDER BY [Cached Size (MB)] DESC

 

MSSQL de Veritabanı Boyutlarını Listelemek.

MSSQL de Veritabanı Boyutlarını Listelemek.

MSSQL de veritabanlarının boyutlarını listelemek isterseniz aşağıdaki T-SQL den faydalanabilirsiniz.

SELECT d.name,
ROUND(SUM(CAST(mf.size AS BIGINT)) /128, 0) Size_MB
FROM sys.master_files mf
INNER JOIN sys.databases d ON d.database_id = mf.database_id
where DB_NAME(d.database_id) NOT IN(
select DISTINCT DB_NAME(r.database_id) AS 'DBNAME' from 
sys.dm_hadr_database_replica_states r
join sys.dm_hadr_availability_group_states s on s.group_id=r.group_id
where s.primary_replica<>@@SERVERNAME)
GROUP BY d.name
ORDER BY Size_MB desc

 

 

Pgtune ile PostgreSQL.conf Konfigürasyonları

Pgtune ile PostgreSQL.conf Konfigürasyonları

PostgreSQL yalın halde tutulmuş veritabanıdır ve konfigurasyonlar yapmadan belirli bir süreye kadar çalışmaya devam eder fakat veritabanlarında yük oldukça problemler çıkmaya başlayacaktır.

Sorunların çıkmaması ve performans kaybı yaşanmaması için  sistem ve kullanılan kaynaklara göre gerekli çalışmaları yapmamız gerekir. Bunun için postgresql.conf dan gerekli konfigurasyonları yapmanız gerekecektir .postgresql.conf dosyasını ve sistemi sizin verdiğiniz parametreleri baz alarak yapan bazı toollar bulunmaktadır fakat bu toollar yerine sizin sistemi izleyerek gerekli parametreleri belirlemenizi tavsiye ederim.Fakat ilk kez postgresql kurulumu yaptınız ve  standart konfigurasyonlarda kalmasın diyorsanız bahsedeceğim pg_tune aracını kullanabilirsiniz.

 PgTune  sistem analizi ve  parametrelere göre önerilen konfigurasyon karşımıza çıkıyor.

Pg_tune ile ilgili  dosyaları indirmek için aşağıdaki linkten faydalanabilirsiniz.

https://github.com/le0pard/pgtune

Linkte belirtilen dosyaları indirdikten sonra indirilen dizine girerek aşağıdaki komutlar yardımı ile pgtune’u çalıştırıyoruz.

pgtune’u çalıştırırken aşağıdaki gibi postgresql.conf pathini girmemiz gerekiyor .Aşağıdaki komutu çalıştırarak farklı kullanımlarını görebiliriz.

./pgtune --help

Aşağıda connection sayısını belirterek önerilen konfigurasyonları aşağıdaki şekilde görebilirsiniz.

./pgtune -i /var/lib/postgresql/10/data/postgresql.conf  -c 1000

Bu size karışık geldiyse  aşağıda linki verilen sitede DB versiyonu ,işletim sistemi ,DB tipi ,total memory,cpu ve connection sayıları ve disk ile ilgili değerleri girerek verilen  konfigurasyonu kullanabilirsiniz. 
 
https://pgtune.leopard.in.ua/#/

Yukarıdaki linkte sitede pg_tune aracını kullanarak hesaplamalar yapacaktır.

 683 total views

Theme: Overlay by Kaira Extra Text
Cape Town, South Africa