Postgresql Veri Tabanı Parametrelerinin Ayarlanması

Postgresql veri tabanı parametrelerinin çoğu postgresql.conf dosyasının içerisinde yer alır. Bu parametreler veri tabanının çalışmasında önemli roller üstlenir. Bu yüzden değerlerinin doğru ve optimize şekilde ayarlanması önemlidir. Postgresql.conf dosyası PGDATA dizininde yer alır.

Şekil 1 : postgresql.conf dosyası

Postgresql main process’I SIGHUP sinyalini aldığı zaman Postgresql konfigürasyon dosyası yeniden okunur. Bu sinyal postgresql’e iki yolla gönderilebilir. İşletim sistemi üzerinde postgres kulanıcısı ile “pg_ctl reload” komutu ile veya psql komut satırı aracından “SELECT pg_reload_conf()” komutu ile postgresql.conf dosyasının tekran okunması sağlanır.

Şekil 2 : postgresql.conf dosyasının yeniden okutulması

Bir parametre değiştirildikten sonra değişikliğin geçerli olması için pg_reload komutu çalıştırılmalıdır. Bazı parametre değişikliklerinde ise server restart edilmeyene kadar değişiklikler geçerli olmayacaktır.

Ayrıca pg_file_settings sistem view’ı sorgulanarak da parametre değerleri görüntülenebilir.

Şekil 4 : pg_file_settings sistem view’ı

ALTER SYSTEM Komutu

ALTER SYSTEM komutu kullanılarak bir parametre değiştirildiği zaman bu değişiklik postgresql.auto.conf dosyasına yazılır. Bu dosyadaki değerler postgresql.conf’daki parametre değerlerine göre önceliklidir. Bir parametrenin değeri pg_settings sistem view’ı yardımı ile görüntülenebilir.

Şekil 5 : pg_file_settings sistem view’ı

“ALTER SYSTEM SET timezone” komutu ile timezone parametresi değiştirildikten sonra postgresql.auto.conf dosyasına güncel timezone değeri yazılır. Postgresql.conf dosyasında ise değişken değeri hala aynıdır. Timezone parametresinin güncel değeri select * from pg_settings where name= ‘TimeZone’ komutu ile kontrol edildiğinde parametre değerinin postgresql.auto.conf dosyasından okunduğu görülür.

Şekil 6 : timezone parametresinin kontrol edilmesi

ALTER DATABASE KOMUTU

ALTER DATABASE komutu ile global parametrelerin veri tabanı bazında override edilmesi sağlanır. ALTER ROLE komutu ile global ve veri tabanı seviyesinde set edilmiş parametrelerin USER bazında override edilmesi sağlanır.

NOT : Her parametre veri tabanı ve session bazında override edilemez. Dolayısıyla bazı parametreler için ALTER DATABASE ve ALTER ROLE komutları kullanılamaz.

SHOW ALL komutu ile bir session için o an geçerli olan parametre değerlerinin hepsi görüntülenebilir.

ÖRNEK : CREATE ROLE komutu ile test1  ve test2 kullanıcısı oluşturulur. İkisi için de work_mem isimli farklı değerlere set edilir ve etkileri gözlemlenir.

create role test_user1 login password ‘welcome123’;

create role test_user2 login password ‘welcome123’;

Şekil 7 : test_user1 için work_mem değeri

Aşağıdaki komut ile bir parametrenin rol bazında değiştirilmesi sağlanır.

ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT } ;

ALTER ROLE test_user1 IN DATABASE postgres SET work_mem = ‘2MB’ ;

Şekil 8: test_user1 için work_mem parametresinin değeri.

SET komutu ile test_user2 için work_mem parametresi set edildiğinde; parametre değişikliği session bazında geçerli olur. Yani logout olup tekrar login olunduğunda parametre değişikliğinin geçerli olmadığı görülür.

Şekil 9: SET komutu ile work_mem parametresinin ayarlanması

UPDATE pg_settings SET setting = reset_val WHERE name = ‘configuration_parameter’;

Yukarıdaki update komutu kullanılarak parametreler default değerine set edilebilir.

Veysel YUKSEL
Latest posts by Veysel YUKSEL (see all)

Veysel YUKSEL

RDBMS ve NoSQL veri tabanı yönetimi ve Big Data teknolojileri.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir