ユーザ用ツール

サイト用ツール


os:zfs_tips

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
最新のリビジョン両方とも次のリビジョン
os:zfs_tips [2020/02/03 10:04] – [swap ボリュームについて] yuichiroos:zfs_tips [2020/02/03 18:26] – [skip-innodb-doublewrite] yuichiro
行 186: 行 186:
 ==== PostgreSQL ==== ==== PostgreSQL ====
  
 +=== atime ===
  
 +atime は off にしましょう。理由は前述の通りです。
 === record size === === record size ===
  
行 234: 行 236:
 </code> </code>
  
-==== MySQL ====+==== MySQL (innodb) ==== 
 + 
 +=== atime === 
 + 
 +atime は off にしましょう。理由は前述の通りです。 
 +=== record size === 
 + 
 +データ用とログ用に2つのファイルシステムを用意します。 
 +データ用には recordsize=16k を、ログ用はデフォルトの recordsize=128k を設定します。 
 + 
 +^ 用途 ^ recordsize ^ 
 +| データ用 | 16k | 
 +| ログ用 | 128k (default) | 
 + 
 +innodb はデータの読み書きを一度に 16k ずつ行うため、それに合わせます。 
 +ログ用は追記のためデフォルトのままでかまいません。 
 + 
 +=== log bias === 
 + 
 +innodb でもログを先行書き込みしますので zfs でログを書き込む必要はないとも言って良いでしょう。 
 +データ用のファイルシステムに対し logbias=throuput を設定し zfs のログの書き込みを OFF にします。 
 +ログ用については失われると困るため、デフォルトのまま logbias=latency が良いでしょう。 
 + 
 +^ 用途 ^ logbias ^ 
 +| データ用 | throuput | 
 +| ログ用 | latency (default) | 
 + 
 +=== primary cache === 
 + 
 +MySQL もアプリケーション側で必要なデータをメモリ内にキャッシュします。 
 +こちらを十分に効かせれば ZFS でキャッシュさせる必要性は低くなりますので、 
 +primarycache=metadata を設定し、メタデータのキャッシュのみを行うようにします。 
 + 
 +データ用、ログ用、どちらにも言えます。 
 + 
 +^ 用途 ^ primarycache ^ 
 +| データ用 | metadata | 
 +| ログ用 | metadata | 
 + 
 +=== compression === 
 + 
 +lz4 による圧縮は非常に高速に動作します。 圧縮率はそれほど良くはありませんが、半分程度に圧縮されれば、見た目のスループットは2倍に向上します。圧縮率が悪くても lz4 が高速に動作するためペナルティが少なく、設定するメリットは十分にあります。 
 + 
 +データ用、ログ用ともに compression=lz4 を設定しておくと良いでしょう。 
 + 
 +^ 用途 ^ compression ^ 
 +| データ用 | lz4 | 
 +| ログ用 | lz4 | 
 + 
 +=== skip_innodb_doublewrite === 
 + 
 +my.cnf に skip_innodb_doublewrite を設定し MySQL にデータを2回書く処理を止めさせます。 
 + 
 +これはもともと 16k のデータの内、半分の 8k だけはディスクに書かれたが残りの 8k は書かれていないようなタイミングで電源喪失などが発生した際にそれを検知するためのものです。 
 +Copy On Write の ZFS ではどのようなタイミングでもこういう事にはならないため、単純に OFF にすることができます。 
 +2回の書き込みが1回に減る分、性能向上が期待できます。 
 + 
 +==== MySQL (MyISAM) ==== 
 + 
 +=== atime === 
 + 
 +atime は off にしましょう。理由は前述の通りです。 
 +=== record size === 
 + 
 +MyISAM は一度に 8k ずつデータを読み書きしますので、recordsize=8k を指定します。 
 +ログ用にディレクトリを分けることができませんので、データ用に合わせます。 
 + 
 +=== primary cache === 
 + 
 +MyISAM でもアプリケーション側で必要なデータをメモリ内にキャッシュします。 
 +primarycache=metadata で zfs の arc 使用量を制限し、アプリケーション側で使えるメモリを増やします。 
 + 
 +=== log bias === 
 + 
 +データとログが同じファイルシステムに置かれるため、安全のためデフォルトのまま logbias=latecy にするのが良いでしょう。 
 + 
 +=== compression === 
 + 
 +lz4 で得られるメリットは innodb と同じです。
  
-<未稿> 
  
os/zfs_tips.txt · 最終更新: 2022/09/13 11:35 by 127.0.0.1

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: 2-Clause BSD License
Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki