pg_reorg Nedir?

pg_reorg Nedir?

VACUUM, VACUUM FULL ,CLUSTER  yazılarımda postgresql de bloat dataların nasıl temizleneceğinden bahsetmiştim.  Bloat dataları temizlerken VACUUM FULL ve CLUSTER ile  işlem yapılan tablo ve ya tablolarda exclusive lock olmaktadır. Bunun önüne geçmek için farklı çözümler bulunmaktadır bu çözümlerden birisi de pg_reorg dır. Pgfoundry tarafından geliştirilen pg_reorg ‘ın 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_reorg 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 v e 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_reorg  geliştirilmesi şuan için  durdurulmuştur. Geliştirilmesi durdurulmasına rağmen bazı firmalar bunu kullanmaya devam etmektedir.

Pg_reorg  2011 sonlarında geliştirilmesi yavaşlayarak durduğundan dolayı projenin devamı niteliğinde olan pg_repack geliştirilmiştir.

Pg_reorg ile ilgili github linki aşağıdaki gibidir.

https://github.com/ossc-db/pg_reorg

https://github.com/ossc-db/pg_reorg

 

Loading