innodb_flush_method
innodb_flush_methodパラメータは、InnoDBがログファイルとデータファイルを開いてフラッシュする方法を指定します。
最適化
InnoDB最適化では、このパラメータを設定すると、必要に応じてデータベースのパフォーマンスが調整されます。
次のオプションは、InnoDBを使用してファイルをフラッシュするためのものです。
-
fsync
。InnoDBでは、fsync()
データファイルとログファイルの両方をフラッシュするシステムコール。このオプションはデフォルト設定です。 -
O_DSYNC
。InnoDBでは、O_DSYNC
ログファイルを開いてフラッシュし、データファイルをフラッシュするにはfsync()を使用します。InnoDBが使用しないO_DSYNC
直接、なぜなら、多くの種類のUNIXで問題があったからです。 -
O_DIRECT
。InnoDBでは、O_DIRECT
オプション(またはdirectio()
(Solarisの場合)データファイルを開くには、次のコマンドを使用します。fsync()
データファイルとログファイルの両方をフラッシュします。このオプションは、一部のGNU/Linuxバージョン、FreeBSD、Solarisで利用できます。 -
O_DIRECT_NO_FSYNC
。InnoDBでは、O_DIRECT
オプションはI/Oのフラッシュ時に使用されますが、fsync()
後でシステムコール。このオプションは、一部のタイプのファイルシステム(XFSなど)には適していません。ファイルシステムにfsync()
システムコール(たとえば、すべてのファイルメタデータを保持する場合)は、O_DIRECT
代わりにオプション。
観察
NetAppラボテストでは、 fsync
NFSとSANではdefaultオプションが使用されており、 O_DIRECT
。flushメソッドを使用している場合 O_DIRECT
ONTAPでは、クライアントが4096ブロックの境界で大量のシングルバイト書き込みをシリアル方式で書き込みました。この書き込みにより、ネットワーク経由のレイテンシが増加し、パフォーマンスが低下します。