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