Blog Postgresql Tablo: Logged-Unlogged Özelliği

Postgresql Tablo: Logged-Unlogged Özelliği

Postgresql'de tablo üzerinde logged unlogged özelliğini açıp kapatabilirsiniz.

Tablo ‘unlogged’ yapıldığında dml işlemleri hızlanır çünkü wal dosyasına transection loglarını yazmakla uğraşılmaz fakat veritabanı beklenmedik bir şekilde kapandığında bu tabloya erişilemez tamamen kaybedilir. Veri tabanı olağan bir şekilde kapatılıp açıldığında herhangi bir sorun yaşanmaz ve tabloya erişim sağlanabilir.

Tablo ‘logged’ olarak default değerinde bırakıldığında dml işlemleri daha uzun sürmektedir. Bunun sebebi ise; wal dosyasına transectionların yazılması gerekmektedir. Bu durum aşağıdaki şekilde örneklendirilebilir:

‘Unlogged’ diğer tablo ise ‘logged’ şeklinde iki adet tablo oluşturulur.

eng=# create table deneme1 (id integer);

CREATE TABLE

eng=# create unlogged table deneme2 (id integer);

CREATE TABLE

Tablolardan ‘Logged’ olan 10M kayıt insert edilir (Aşağıda da belirtildiği üzere 25 saniye sürmektedir).

eng=# insert into deneme1 (select generate_series(1,10000000));

INSERT 0 10000000

Time: 25742.589 ms (00:25.743)

Tablolardan ‘Unlogged’ olan 10M kayıt insert edilir (Aşağıda da belirtildiği üzere 9 saniye sürmektedir).

eng=# 

eng=# insert into deneme2 (select generate_series(1,10000000));

INSERT 0 10000000

Time: 9006.489 ms (00:09.006)

Bir tablonun ‘logged’ veya ‘unlogged’ özelliğini aşağıdaki şekilde değiştirilebilir.

eng=# alter table deneme2 set logged ;

ALTER TABLE

Time: 36865.907 ms (00:36.866)

eng=# alter table deneme2 set unlogged ;

ALTER TABLE

Time: 14166.742 ms (00:14.167)

 

Yazar: Engin Yılmaz