innodb_flush_method
El parámetro innodb_flush_method especifica cómo InnoDB abre y vacía los archivos log y de datos.
Optimizaciones
En la optimización de InnoDB, la configuración de este parámetro modifica el rendimiento de la base de datos cuando es aplicable.
Las siguientes opciones son para vaciar los archivos a través de InnoDB:
-
fsync
. InnoDB utiliza elfsync()
llamada del sistema para vaciar los archivos de datos y de registro. Esta opción es el valor predeterminado. -
O_DSYNC
. InnoDB utiliza elO_DSYNC
opción para abrir y vaciar los archivos de registro y fsync() para vaciar los archivos de datos. InnoDB no utilizaO_DSYNC
Directamente, porque ha habido problemas con él en muchas variedades de UNIX. -
O_DIRECT
. InnoDB utiliza elO_DIRECT
opción (o.directio()
En Solaris) para abrir los archivos de datos y usosfsync()
para vaciar los archivos de datos y de registro. Esta opción está disponible en algunas versiones de GNU/Linux, FreeBSD y Solaris. -
O_DIRECT_NO_FSYNC
. InnoDB utiliza elO_DIRECT
Durante el vaciado de I/O; sin embargo, omite elfsync()
llamada del sistema posterior. Esta opción no es adecuada para algunos tipos de sistemas de archivos (por ejemplo, XFS). Si no está seguro de si su sistema de archivos requiere unfsync()
llamada al sistema (por ejemplo, para conservar todos los metadatos del archivo), utilice elO_DIRECT
en su lugar.
Observación
En las pruebas de laboratorio de NetApp, el fsync
La opción predeterminada se utilizó en NFS y SAN, y fue un gran improvisador de rendimiento O_DIRECT
. Mientras se utiliza el método de vaciado como O_DIRECT
Con ONTAP, hemos observado que el cliente escribe muchas escrituras de un solo byte en el borde del bloque de 4096 KB de forma en serie. Estas escrituras aumentan la latencia en la red y el rendimiento disminuye.