Şimdi, "İşlem Kimliği Wraparound" ile ilgili belgeyi okudum, ama gerçekten anlamadığım bir şey var, belge şu url http://www.postgresql.org/docs/9.0/static/routine-vacuuming .html # VAKUM-FOR-sarma
23.1.4. İşlem Kimliği Silme Hatalarını Önleme
PostgreSQL'in MVCC işlem semantiği, işlem kimliği (XID) sayılarını karşılaştırabilmeye bağlıdır: XID eki geçerli işlemin XID'sinden büyük olan bir satır sürümü "gelecekte" dir ve geçerli işlem tarafından görülmemelidir. Ancak işlem kimliklerinin boyutu sınırlı olduğundan (32 bit) uzun süre çalışan bir küme (4 milyardan fazla işlem) işlem kimliği sarmaına maruz kalır: XID sayacı sıfıra sarılır ve geçmiş gelecekte görünmektedir - yani çıktıları görünmez olur. Kısacası, yıkıcı veri kaybı. (Aslında veriler hala oradadır, ancak buna erişemezseniz bu soğuk rahatlıktır.) Bundan kaçınmak için, her veritabanındaki her tabloyu en az iki milyar işlemde bir vakumlamak gerekir.
"İşlem kimliği sarma işlemine maruz kalacaktır: XID sayacı sıfıra dolanıyor ve geçmişte yapılan ani işlemlerin gelecekte görüneceği anlaşılıyor - yani çıktıları görünmez oluyor"
Birisi bunu açıklayabilir mi? Veritabanı işlem kimliği sarmalamasının ardından neden geçmişte gerçekleşen işlemler gelecekte görünecek? Kısacası, PostgreSQL'in autovacuum tarafından işlem kimliği sarmalamasından sonra "veri kaybı" durumunda olup olmayacağını bilmek istiyorum。
Kişisel görünümlerim için, çıkış işleminin 64 bit olduğu ve çevrilmeyeceği txid_current () işlevini kullanarak geçerli işlem kimliğini alabiliriz. txid_current () işlevi tarafından. Bunun dışında PostgreSQL Sunucusunu kapattıktan sonra pg_resetxlog sıfırlama sıfırlama işlem kimliğini kullanacaksınız. Haklı mıyım? Teşekkürler