Ahora, leí el documento sobre "Transaction ID Wraparound", pero hay algo que realmente no entiendo, el documento es la siguiente url http://www.postgresql.org/docs/9.0/static/routine-vacuuming .html # VACIO PARA ENVOLVENTE
23.1.4. Prevención de fallas envolventes de ID de transacción
La semántica de transacciones MVCC de PostgreSQL depende de poder comparar los números de ID de transacción (XID): una versión de fila con un XID de inserción mayor que el XID de la transacción actual es "en el futuro" y no debería ser visible para la transacción actual. Pero dado que las ID de transacción tienen un tamaño limitado (32 bits), un clúster que se ejecuta durante mucho tiempo (más de 4 mil millones de transacciones) sufriría una envoltura de ID de transacción: el contador XID se ajusta a cero y, de repente, las transacciones que estaban en el el pasado parece estar en el futuro, lo que significa que su producción se vuelve invisible. En resumen, pérdida de datos catastrófica. (En realidad, los datos todavía están allí, pero es un consuelo frío si no puede llegar a ellos). Para evitar esto, es necesario aspirar todas las tablas de cada base de datos al menos una vez cada dos mil millones de transacciones.
No entiendo las declaraciones "sufriría una envoltura de ID de transacción: el contador XID se ajusta a cero, y de repente las transacciones que estaban en el pasado parecen ser en el futuro, lo que significa que su salida se vuelve invisible"
¿Alguien puede explicar esto? ¿Por qué después de que la base de datos sufre un Wraparound de ID de transacción, las transacciones que estaban en el pasado parecen ser en el futuro? En resumen, quiero saber si PostgreSQL se encontrará en la situación de "pérdida de datos" después de que el ID de transacción se complete automáticamente.
Para mis puntos de vista personales, podemos obtener el ID de transacción actual mediante el uso de la función whoes txid_current (), la salida whoes es de 64 bits y no se reciclará. por la función txid_current (). Excepto que usará pg_resetxlog reset reset ID de transacción después de cerrar el servidor PostgreSQL. Estoy en lo cierto? Gracias