Pg_compacttable

Pg_compacttable , postgresql içerisinde bulunan vacuum full ve cluster gibi araçlar kullanılırken sistemde uzun süreli locklara neden olduğundan dolayı geliştirilen bir araçtır.

Pg_compacttable bir tabloda çalıştırıldığında işlem yapılan tabloda işlem sırasında gelecek olan insert,update ve delete gibi işlemler için bir tablo oluşturur.  Orijinal tabloda bir  trigger oluşturarak bu oluşturulan tabloya işlem sırasında gelen insert,update,delete işlemlerini yazar. Bu sayede pg_compacttable komutu çalıştırıldığında ilgili tabloda lock’ın önüne geçilmiş olur fakat bunla bitmez sadece eski tablodaki tüm sütunları ve dataları içeren yeni bir tablo oluşturulur ve eski tabloda ki indekslerde  oluşturulur.  Yeni tablo index ve dataları ile beraber oluşturulduktan sonra işlem sırasında gelen insert,update,delete  işlemlerinin tutulduğu tablo yeni tablo ile birleştirilerek işlem tamamlanır . Sistem tabloları ve viewleri de kullanılarak gerekli kontroller tamamlandıktan sonra   eski tablo silinerek yeni tablo rename yapılır ve işlem en az lock ile tamamlanmış olur.

Pg_compacttable komutu pg_compact ile benzese de arasında farklılıklar vardır fakat ikiside farklı kişiler tarafından geliştirilen ve gelişimi hala devam etmekte olan ürünlerdir.

Pg_compacttable’ın pg_repack den farkları  pg_repack de farklı bi yer de tablo oluşturulurken ,pg_compacttable da tablo yerinde işlenir.

Pg_compacttable da tablolar en küçüğünden en büyüğüne tek tek yeniden oluşturulur.

 

–delay-ratio yardımı ile gecikme işlemleri ayarlanabilir.

 

Pg_compacttable  ile  ilgili yükleme işlemlerine geçmeden önce aşağıdaki paketleri yüklemeniz gerekmektedir.

yum install perl-Time-HiRes perl-DBI perl-DBD-Pg

Bunu yükledikten sonra çalıştırılmak istenen veritabanlarında pgstattuple extensionı oluşturulmalıdır.

Yüklendikten sonra indirdiğiniz klasörün içerisindeki bin(binary)  dosyasının içerisine girerek aşağıdaki şekilde çalıştırabilirsiniz.

 

pgcompacttable --all --verbose

 

Loading