MySQL 8.0 DMR と 5.7 パラメータ比較

この記事は [MySQL Casual Advent Calendar 2016](http://qiita.com/advent-calendar/2016/mysql-casual) の14日目です。

MySQL 8.0 Developer Milestone Release が９月にリリースされました(｀・ω・´)
早速、5.7と比較してパラメータがどのように変化したか差分を確認してみました。

## 利用したバージョン
8.0.0-0.1.dmr と 5.7.16 でSHOW GLOBAL VARIABLESを実行し、得られた項目を比較しています。

## なくなった設定項目

http://mysqlserverteam.com/the-mysql-8-0-0-milestone-release-is-available/

|      設定項目                    | 用途                | 廃止理由    |
|:--------------------------------|:--------------------|:------------|
| ignore_db_dirs                  | データディレクトリ内のディレクトリでデータベースとして扱いたくないものを指定する。 | [データディクショナリ機能](http://mysqlserverteam.com/mysql-8-0-data-dictionary-status-in-the-8-0-0-dmr/)によりディレクトリベースでの管理は廃止。 |
| *innodb_checksums               | InnoDBのデータファイルに対してチェックサムを実行するかどうか選択します。 | innodb_checksum_algorithm に一本化。|
| *innodb_file_format *innodb_file_format_check *innodb_file_format_max | InnoDBのデータファイルの形式を選択します。| 従来は互換性のため古い Antelope フォーマットを選択することもできましたが、8.0で廃止。 |
| *innodb_large_prefix            | このオプションを有効にすると、DYNAMIC および COMPRESSED 行フォーマットを使用する InnoDB テーブルで、767 バイトよりも長い (最大で 3072 バイトの) インデックスキープリフィクスが許可されます。| 常にONに |
| *innodb_locks_unsafe_for_binlog | InnoDBのギャップロックの挙動を変更する。| トランザクション分離レベルをREAD-COMMITEDにすることで同様の効果が得られるため廃止。 |
| *innodb_stats_sample_pages      | テーブルの統計情報を更新するときにサンプリングするページ数を指定。大きくすると統計情報の正確性が増すが、負荷が増える。| innodb_stats_transient_sample_pages に一本化されました。 |
| *innodb_support_xa              | | [レプリケーションの安全性とパフォーマンス確保のため、廃止](https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-10.html)。InnoDB XAは無効にできなくなりました。|  |
| sync_frm                       |  | データディクショナリ機能により廃止。|

__\* は MySQL 5.7以前で廃止が予告されていたもの。__

## 増えた設定項目

これまでのtable_definition_cacheに加えて、スキーマ、ストアド、テーブルスペースのデータディクショナリオブジェクトキャッシュが増えてました。
スキーマやストアドを大量に使うケースでなければ、調整しなくて良いでしょう（たぶん）。

|      設定項目                     | 用途        | デフォルト | 
|:---------------------------------|:------------|:----------|
| information_schema_stats         | information_schema でテーブル情報を参照する際、キャッシュされたテーブル情報を利用するか否か。CACHED（Default）の場合、キャッシュされた統計情報を利用する。LATESTの場合、都度テーブルに統計情報を取得しにいくため、最新の情報が見れるが、負荷がかかる場合がある | ON |
| performance_schema_error_size    | P_Sのerror instrument のサイズ | 1043 |
| persisted_globals_load           | mysqld-auto.cnf の有効無効を選択。無効にした場合、SET PERSIST で設定した設定値は無効になる。 | ON |
| schema_definition_cache          | データディクショナリ機能により導入された。[ディクショナリオブジェクトキャッシュ](http://dev.mysql.com/doc/refman/8.0/en/data-dictionary-object-cache.html)、キャッシュするスキーマオブジェクトの数を指定 | 256 |
| stored_program_definition_cache  | データディクショナリ機能により導入された。ディクショナリオブジェクトキャッシュ、キャッシュするストアドオブジェクトの数を指定 | 256 |
| tablespace_definition_cache      | データディクショナリ機能により導入された。ディクショナリオブジェクトキャッシュ、キャッシュするテーブルスペースのオブジェクトの数を指定 | 256 | 


## 値に変更があった設定項目

instrument の各最大値に変更がありました。instrument が増えたことによる微調整でしょう。

|      設定項目                            | MySQL 5.7   | MySQL 8.0DMR |
|:-----------------------------------------|:------------|:-------------|
| performance_schema_max_memory_classes    | 320         | 350          |
| performance_schema_max_rwlock_classes    | 40          |  50          |
| performance_schema_max_statement_classes | 193         | 201          |


## まとめ
* DMRではまだ差分は少なく、どのように設定すべきか悩むようなパラメータもなさそうでした。



明日の [MySQL Casual Advent Calendar 2016](http://qiita.com/advent-calendar/2016/mysql-casual) は[eshimizu](http://qiita.com/eshimizu)さんです。