# Checkpoint

* Un punto del log donde se **escriben los datos** pendientes a disco
* La carga de entrada/salida se ve afectada al hacer checkpoint
* En caso de caida, recuperar ficheros WAL *xlog* desde el log a partir del último checkpoint.

.

    !bash
    $ select pg_current_xlog_location();
    pg_current_xlog_location
    --------------------------
    8/584A62E0
    (1 row)

# Presenter Notes

Un checkpoint es un punto el log en el que se escriben los cambios a disco para reflejar todos los cambios que ya estaban escritos en el log.
En caso de caída, al recuperar se mirará cual es el último checkpoint escrito en disco y a partir de ahí se recuperará del log, aplicando de nuevo las operaciones que no están aplicadas en los archivos de datos de disco para mantener la integridad de datos.
Este requerimiento de guardar los cambios a disco hace que la carga de entrada/salida se ve aumentada.

 [Configuración de WAL en la doc de postgresql](http://www.postgresql.org/docs/9.3/static/wal-configuration.html) 
 
---

# Parámetros checkpoint

* checkpoint_segments (valor por defecto: 3) 
    * nº Ficheros en `pg_xlog`:  **2 * checkpoint_segments + 1**
* checkpoint_timeout (valor por defecto: 300s)
* checkpoint_completion_target (valor por defecto: 0.5)

# Presenter Notes

Parámetros configurables sobre los checkpoints:

**checkpoint_segments** (defecto: 3): El número de segmentos que se tienen que llenar antes de hacer un checkpoint

**checkpoint_timeout** (defecto: 300s): Si no se han llenado los checkpoints_segments en este tiempo se hace un checkpoint.

**checkpoint_completion_target** (defecto: 0.5):

