MariaDBのInnoDBとZFSの書き込み単位
MariDBのパフォーマンス改善の資料を読んで、AIと会話しているときに「ZFSのrecordsizeをInnoDBと合わせるといい」という提案を受けたときの覚書。 Gemini 3 Flash Previewと会話。 参考サイト: Optimization and Tuning | Server | MariaDB Documentation 環境: FreeBSD 14.3-RELEASE-p10, MariaDB Server 11.8.6 1. ZFSとInnoDBの書き込み単位 InnoDB Page Size(MariaDB側):InnoDBがデータを管理・ディスクへ読み書きする最小単位。デフォルトは 16KB。 データベースはこの16KBの「ページ」という箱の中に、実際のレコード(行)を詰め込んで管理する。 ZFS recordsize(ファイルシステム側):ZFSがディスクに書き込む際の最大ブロックサイズ。デフォルトは 128KB 。 不一致が起きると 128KBの枠(ZFS)の中に、16KBのデータ(InnoDB)を書き込もうとすると、ZFSは 「隙間を埋めるために残りの112KBを一旦読み込み、16KBを混ぜて、再度128KBとして書き直す」 というRead-Modify-Write (RMW) という無駄な動作を強制される。 ZFSのrecordsizeを確認。 # zfs get recordsize,atime,compression /var/db/mysql NAME PROPERTY VALUE SOURCE zroot/ROOT/default recordsize 128K default zroot/ROOT/default atime off ...