Sekarang, saya membaca dokumen tentang "Transaction ID Wraparound", tetapi ada sesuatu yang saya benar-benar tidak mengerti, dokumen tersebut adalah url berikut http://www.postgresql.org/docs/9.0/static/routine-vacuuming .html # VACUUM-FOR-WRAPAROUND
23.1.4. Mencegah Kegagalan ID Transaksi ID
Semantik transaksi MVCC PostgreSQL bergantung pada kemampuan untuk membandingkan nomor ID transaksi (XID): versi baris dengan XID penyisipan lebih besar daripada XID transaksi saat ini adalah "di masa depan" dan tidak boleh terlihat oleh transaksi saat ini. Tetapi karena ID transaksi memiliki ukuran terbatas (32 bit), sebuah cluster yang berjalan untuk waktu yang lama (lebih dari 4 miliar transaksi) akan menderita pembungkusan ID transaksi: penghitung XID membungkus menjadi nol, dan semua transaksi tiba-tiba yang ada di masa lalu tampaknya di masa depan - yang berarti output mereka menjadi tidak terlihat. Singkatnya, kehilangan data bencana. (Sebenarnya data masih ada, tapi itu kenyamanan dingin jika Anda tidak bisa mendapatkannya.) Untuk menghindari hal ini, perlu menyedot setiap tabel di setiap basis data setidaknya sekali setiap dua miliar transaksi.
Saya tidak mengerti pernyataan "akan mengalami pembungkusan ID transaksi: penghitung XID membungkus ke nol, dan semua transaksi tiba-tiba yang sebelumnya ada di masa depan - yang berarti output mereka menjadi tidak terlihat"
Adakah yang bisa menjelaskan hal ini? Mengapa setelah basis data menderita ID transaksi, transaksi yang di masa lalu tampak di masa depan? Singkatnya, saya ingin tahu apakah PostgreSQL akan berada dalam situasi "kehilangan data" setelah pembungkus ID transaksi oleh autovacuum。
Untuk pandangan pribadi saya, kita bisa mendapatkan ID transaksi saat ini dengan menggunakan fungsi whox txid_current () output 64 bit dan tidak akan didaur ulang. oleh fungsi txid_current (). Kecuali bahwa Anda akan menggunakan pg_resetxlog reset mereset ID transaksi setelah mematikan PostgreSQL Server. Apakah saya benar ? Terima kasih