oranie's blog

旧:iをgに変えると・・・なんだっけ・・・

「秘伝のタレ」とはなんなのか?というコバンザメエントリ。

素晴らしい内容のエントリですね。

https://kazeburo.hatenablog.com/entry/2020/12/17/164857

ここで出てくる「秘伝のタレ」とはなんなのか?久しぶりにmy.cnf見て意味忘れていたので自分の復習というコバンザメエントリです。 それぞれの内容はオフィシャルドキュメントを確認するのが一番正確です。

innodb_doublewrite = 0 https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_doublewrite https://dev.mysql.com/doc/refman/8.0/en/innodb-doublewrite-buffer.html

innodb_flush_log_at_trx_commit = 2 https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit

上記2つは http://nippondanji.blogspot.com/2010/03/innodb.html にも解説があるのでそちらで確認がベスト。要は多少DIsk障害時の信頼性を犠牲にするけどより効率的にDisk I/Oを使うための設定か。

innodb_flush_method = O_DIRECT_NO_FSYNC https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_method

ここまでの3つでDisk I/Oを少しでも効率的にするのが目的だと思われる。

innodb_adaptive_hash_index = 0 https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_adaptive_hash_index https://dev.mysql.com/doc/refman/5.6/ja/innodb-adaptive-hash.html https://dev.mysql.com/doc/refman/5.6/ja/index-btree-hash.html

今回のワークロードに向かないIndex処理をしない

という形がコトコト煮込まれた内容のようです。なので実運用上は問題無いケースもあれば、ある要件によっては設定するとウッという可能性もあるので無条件にスループットを求めてとにかくみんな設定すれば良いのかはエントリ主のkazeburoさんやyoku0825さんとかが解説してくれる気がします。そもそももう数年前にされている可能性高いけど、