Vale la pena destacar la diferencia entre estos dos modos de trabajo (logging modes) de las bases de datos de Informix.
Informix siempre persiste los datos escribiendo a alguno de sus buffers de log lógico. Si la base de datos en la cual se están haciendo cambios está trabajando en modo unbuffered, estos cambios se escriben al disco duro inmediatamente después de que un registro de commit o rollback llega al log lógico. Si la base de datos está trabajando en modo buffered, el servidor mantiene estos cambios se mantienen en el log el mayor tiempo posible, hasta que ocurre alguno de los siguiente eventos:
- Un buffer se llena
- Se ejecuta un checkpoint
- Se cierra la conexión contra la base de datos
- Se hace un commit a una base que está trabajando en modo unbuffered
En el modo buffered, existen problemas si el sistema se bloquea antes de
que el buffer de log lógico sea escrito al disco duro pero después de la transacción que el usuario completó ejecutando un commit. La transacción se considerará incompleta y se ejecutará un rollback cuando el motor sea reiniciado y se recupere. En modo unbuffered esto no sucede ya que luego del commit se escribirán los datos de la transacción en el disco duro y no se perderán.
Por defecto, se trabaja en modo unbuffered. Si bien enlententece un poco el motor, es más robusto que el modo buffered frente a caídas del motor en lo que a pérdida de datos respecta.
El tamaño de los buffers de logs lógicos se pueden averiguar en el archivo onconfig (parámetro LOGBUFF).
Referencias:
The post Diferencias entre transactional unbuffered y transactional buffered en Informix appeared first on José Arrarte.