ショートタームサポートですが、
2023年6月にMariaDB11.0がGAされました。
詳細は以下から。
https://mariadb.com/kb/en/changes-improvements-in-mariadb-11-0/
で、今回のリリースでは、
オプティマイザのコストモデルに大きな修正が入っているのが特徴のようです。
自分としては、
innodb_flush_method
パラメータがdeprecatedになっており、
以下の4つのパラメータに分解されるようです。
- innodb_log_file_write_through
- innodb_log_file_buffering
- innodb_data_file_write_through
- innodb_data_file_buffering
ログ(WALログ?バイナリログ?それとも2つとも?)とデータによって、
DISKフラッシュをわけるようです。
とはいえ、ちょっと気になるのは、
https://mariadb.com/kb/en/innodb-system-variables/#innodb_flush_method
というページに、
From MariaDB 11.0, if set to one of the following values, then the values of the four boolean flags will be set as follows:
O_DSYNC:
innodb_log_file_write_through=ON,
innodb_data_file_write_through=ON,
innodb_data_file_buffering=OFF,
and (if supported) innodb_log_file_buffering=OFF.
fsync, littlesync, nosync, or (Microsoft Windows specific) normal:
innodb_log_file_write_through=OFF,
innodb_data_file_write_through=OFF,
and innodb_data_file_buffering=ON.
という記述があり、よく見てみると、「O_DIRECTないじゃん」って思ったわけです。
正確には、innodb_flush_methodがなくなった場合、
「O_DIRECTできないじゃん」ということです。
「O_DIRECT」といえば、OSキャッシュをしない、いわゆるダイレクトIOであり、
LINUX環境では設定している人も多いハズ。
(O_DIRECT_NO_FSYNCってのもあり、mysqlのdedicated serverを使うとこっちになることもあるよう)
で、かわりに「O_DSYNC」となるわけだが、こいつの真偽のほどがわからん。。
調べてみると、「O_DIRECT」より速いけど条件付きだよとか、
SSDなら「O_DIRECT」より速いけど一貫性が低いよ(fsyncの回数が少ない?)なんてのもあり、
ちょっと何が正しいのかよくわからん状況です。
11系のLTSが出るまでは時間ありそうなので、
mysqlの動きと合わせて、少し注視しておいたほうがよさげな気がしてます。
あと、自分の作っているmagentadeskも11.0に対応済みです。
https://github.com/shigenobu/magentadesk
以上
コメントがあればどうぞ