Proposed MySQL 5.7 defaults. Please send feedback! http://t.co/Uq6c7STXBE
— morgo (@morgo) 2015, 1月 23
Proposal to change Replication and InnoDB Settings in MySQL 5.7 http://t.co/gr3AwwmoEv
— morgo (@morgo) 2015, 1月 14
ので、ちょっと解説してみます。わたしが勝手に思っていることを述べているだけなので、詳しくは原文をあたってください。
まずはこっち。 Proposal to change additional defaults in MySQL 5.7 | Master MySQL
* transaction_isolation
* REPEATABLE-READ から READ-COMMITTED に
実際READ-COMMITTEDで十分だし、いくつかのサービスはREAD-COMMITTEDで速くなってるし、今後波及させていくつもりだったし、個人的にはいいんじゃない感。
クセのあるREPEATABLE-READがデフォルトじゃなくなるのは少し寂しい気がしなくもないのと、REPEATABLE-READを前提にした情報がWEBには溢れているので、それが淘汰されるまで時間がかかりそうだなぁと思うくらい。
* binlog_format
* STATEMENT から ROW に
トランザクション分離レベルがREAD-COMMITTEDになるとSBRは使えないから当然こうなる。RBRはSBRに比べてサイズがでかいとはいえ、1クエリーで100万レコード書き換えるようなクエリーはそうそう(ユーザートラフィック上では)ないのでそこまで悲観してない。ところで一時期は暗黙のデフォルトまで上り詰めたMIXEDはどこいった。
* innodb_autoinc_lock_mode
* 1から2に
1よりも2の方が並列性能高いんだけど、SBRで2にするとデータがズレることがあるよ! ということで1になっていたのが、RBRになるので安心して2にできるということか。
( ´-`).oO(新しいデフォルトでbinlog_formatをROW以外の何かに変える時は残りの2つも変えないとヤバい、と。憶えてられるかな。
次はこっち。 Proposal to change Replication and InnoDB Settings in MySQL 5.7 | Master MySQL
* binlog_error_action
* 5.7.5ではbinlogging_impossible_modeと呼ばれていたアレ。
* IGNORE_ERROR から ABORT_SERVER へ
バイナリーログの書き出しに失敗した時の動作を指定できるオプション。バイナリーログに書き出しができなければmysqldがまるっと落ちるようなデフォルトに。InnoDBログファイルとかもともとそうだし、InnoDBのクラッシュリカバリーにバイナリーログを使ったりする昨今では妥当な変更。
* innodb_checksum_algorithm
* 昔innodb_checksumと呼ばれていたアレの発展バージョン。5.6からこの名前。
* innodb (ソフトウェア計算) から crc32 (ハードウェア支援が受けられればそれを使える) に
ベンチとってみたくなります。
* innodb_page_cleaners, innodb_purge_threads
* 1 から 4 へ
* innodb_strict_mode
* OFF から ON へ
もともとONで使ってるからそんなに気にならない。
* innodb_log_file_size
* 48M から 128M へ
今までが少なすぎたので、いいことかと(いや、自分で指定するけど)
昔はクラッシュリカバリーに時間がかかったーというけど5.5以降ならギガバイト単位でもそんなに困らないし、ストレージも大きくなったしってことで。
* innodb_buffer_pool_dump_at_shutdown, innodb_buffer_pool_load_at_startup
* 0 から 1 へ
MySQL 5.6で入ったInnoDBバッファプール暖機のアレ。デフォルトで有効に。
* innodb_buffer_pool_dump_pct
* 100 から 25 に
InnoDBバッファプールダンプ(↑InnoDBバッファプール暖気のやつ)のとき、バッファプール全体の何%をib_buffer_poolに書き出すかというオプションらしい。そもそも5.7での新顔。
* innodb_file_format
* Antelope から Barracuda
ついにデフォルトになるときがきたのだー
* innodb_large_prefix
* OFF から ON に
かみぽさんの悲願がついにかなう。
* binlog_gtid_recovery_simplified
* OFF から ON に
オプション名も変わっているみたいだけど、そもそも初めて知ったオプション。
このへんと関係ある? Relay Log Recovery when SQL Thread’s Position is Unavailable | MySQL Server Blog
* sync_binlog
* 0 から 1 へ
ACIDのDに使うようになっちゃってますからね。
* slave_net_timeout
* 3600 から 60 へ
これも長すぎる長すぎる言われてたのが、ついに。
* [mysql]セクションのpropmt
* "mysql> " から "\u@\h [\d] > " に
ユーザー名@ホスト名 [スキーマ名]、これはもともとやってる人多かったんじゃなかろうか。
* sql_mode
* 今までのに加えて NO_AUTO_CREATE_USER
GRANTステートメント前にCREATE USERステートメント必須。
どっちもプロポーザルってことになっているので、興味があればコメントしてみたりするといいと思います :)
【2015/02/25 11:28】
新しくまた別のプロポーザルも出てたので、こっちに書きました。
日々の覚書: MySQL 5.7の暗黙のデフォルトに対するプロポーザル その2