MySQL 5.7には150を超える新機能がある。
MySQLのマニュアルはとてもいいものだが、少し長すぎる。これは、新機能の箇条書きリストだ。それぞれの機能について1つずつまとめるように頑張ってある。なので、 InnoDBのネイティブパーティショニング については、InnoDBの項かパーティショニングの項のどちらかにだけ載っている。
それか、yumかaptのリポジトリーからもインストール可能だ。
レプリケーション関連
- マルチソースレプリケーション(訳注: 1スレーブに複数マスターを設定可能になった) [ 1 ]
- オンラインでのGTIDの有効化 [ 1 2 3 ]
- 準同期レプリケーションの性能向上 [ 1 2 ]
- ロスレス準同期レプリケーション [ 1 2 ]
- 準同期レプリケーションでいくつのスレーブからACKが返ってくるまで待つかを指定できるように(訳注: 従来は1台で固定だった) [ 1 ]
- 同一スキーマ内での並列レプリケーション [ 1 ]
binlog_group_commit_sync_delay及びbinlog_group_commit_sync_no_delay_countオプションによるグループコミットのチューニング [ 1 2 ]- ノンブロッキング
SHOW SLAVE STATUS[ 1 2 ] CHANGE REPLICATION FILTERによるオンラインでのレプリケーションフィルター(訳注:replicate_do_*,replicate_ignore_*オプション相当) [ 1 ]- SQLスレッドを停止することなく発行できる
CHANGE MASTER TO[ 1 ] - マルチスレッドスレーブのコミット順(シーケンス上の一貫性)の保証 [ 1 ]
- マルチスレッドスレーブの
slave_transaction_retriesオプションのサポート(訳注: 旧来はマルチスレッドスレーブ時はリトライしなかった) [ 1 ] WAIT_FOR_EXECUTED_GTID_SET関数の追加 [ 1 2 ]- スレーブでのGTID最適化 [ 1 2 ]
log-slave-updatesが無効でもGTIDを有効にできるように変更- binlog有効時のXAのサポート [ 1 ]
- OKパケット内部にGTIDを埋め込むように変更 [ 1 ]
- マスターのBinlogダンプスレッドとユーザースレッドとの競合時の処理の向上 [ 1 2 ]
- Binlogダンプスレッドのメモリマネージメントの改良 [ 1 ]
- デフォルト値の変更:
binlog_format=ROW - デフォルト値の変更:
sync_binlog=1 - デフォルト値の変更:
binlog_gtid_simple_recovery=1 - デフォルト値の変更:
binlog_error_action=ABORT_SERVER - デフォルト値の変更:
slave_net_timeout=60
InnoDB関連
- オンラインでのバッファプールサイズ変更 [ 1 ]
- クラッシュリカバリーのパフォーマンス向上 [ 1 ]
- 読み込みしか行わないトランザクションのスケーラビリティー向上 [ 1 2 3 4 ]
- 読み書き両方を行うトランザクションのスケーラビリティー向上 [ 1 2 3 4 ]
- テンポラリーテーブルのための最適化 [ 1 2 3 4 5 ]
ALTER TABLE RENAME INDEXがメタデータの変更のみで可能(訳注: オンラインALTER TABLEが可能) [ 1 ]VARCHARのサイズ変更がメタデータの変更のみで可能(訳注: オンラインALTER TABLEが可能、ただし変更前と変更後のサイズが256をまたがない場合に限る) [ 1 ]ALTER TABLEのパフォーマンス向上 [ 1 ]- 複数のページクリーナースレッド(訳注: バッファプールのダーティーページを非同期にフラッシュするスレッド)を設定可能 [ 1 ]
- バッファプールのフラッシングの最適化 [ 1 ]
innodb_log_checksum_algorithmオプションの追加 [ 1 ]- NUMAサポートの改善 [ 1 ]
- ジェネラルテーブルスペース(訳注: 任意のテーブルが任意のibdファイルに割り当て可能になる)のサポート [ 1 ]
- 透過的ページ圧縮のサポート [ 1 ]
- REDOログの'read-on-write'問題に対する
innodb_log_write_ahead_sizeオプションの追加 [ 1 ] - 全文検索がフルテキストパーサープラグインをサポート [ 1 ]
- N-gram、MeCabフルテキストパーサーのサポート [ 1 2 ]
- 全文検索の最適化 [ 1 ]
- バッファプールダンプ(訳注: バッファプールウォームアップのためにページ番号を書き出す処理)に
innodb_buffer_pool_dump_pctオプションを追加 [ 1 ] - ファイルシステムがアトミックライトをサポートしている場合(Fusion-ioがよく知られている)ダブルライトバッファを無効化する処理 [ 1 ]
- ページフィルファクター(訳注: ページの何%が削除された時に、隣のページとマージされるかの閾値)が設定可能に [ 1 ]
- 32K, 64Kのページサイズのサポート [ 1 ]
- UNDOログのオンラインでの縮小 [ 1 ]
- メタデータ上の
Update_timeが正しく記録されるように変更 [ 1 ] TRUNCATE TABLEがアトミックな操作に変更 [ 1 ]- Memcached APIのパフォーマンス向上 [ 1 ]
- Adaptive Hashのスケーラビリティーを向上 [ 1 ]
information_schema.filesがInnoDBをサポート(訳注: 旧来はNDBのみ) [ 1 ]- 古いInnoDB Monitorを有効化するためのテーブルが削除(訳注:
CREATE TABLE innodb_monitor ( a int ) Engine= InnoDBが廃止)され、グローバル変数で有効/無効を切り替えるように変更 - デフォルトのROW_FORMATが設定可能に [ 1 ]
- デフォルト値の変更:
innodb_file_format=Barracuda - デフォルト値の変更:
innodb_large_prefix=1 - デフォルト値の変更:
innodb_page_cleaners=4 - デフォルト値の変更:
innodb_purge_threads=4 - デフォルト値の変更:
innodb_buffer_pool_dump_at_shutdown=1 - デフォルト値の変更:
innodb_buffer_pool_load_at_startup=1 - デフォルト値の変更:
innodb_buffer_pool_dump_pct=25 - デフォルト値の変更:
innodb_strict_mode=1 - デフォルト値の変更:
innodb_checksum_algorithm=crc32 - デフォルト値の変更:
innodb_default_row_format=DYNAMIC
オプティマイザー関連
- 実行計画の安定化のためのコストモデルオプティマイズ [ 1 2 3 4 ]
- グローバルまたはエンジン単位で設定可能なコスト値 [ 1 2 ]
- パーサーのリファクタと改良 [ 1 ]
EXPLAIN FOR CONNECTION[ 1 ]UNION ALLがテンポラリーテーブルを作成しなくなった [ 1 2 3 4 ]- ファイルソートがパックした値を利用して行われるようになった(訳注: 旧来はvarchar(255)は255文字分の領域をファイルソートで使っていたが、今後は本当に詰められている文字数分だけを利用する) [ 1 ]
FROM句のサブクエリーがビューと同じように扱われるようになった(訳注: 不要なマテリアライズを避けるようになった) [ 1 ]- 行コンストラクター(訳注: WHERE (a, b, c)= (1, 2, 3)のようなもののこと)を利用したクエリーの最適化 [ 1 2 ]
- コンディションフィルタリングのサポート [ 1 2 ]
EXPLAIN FORMAT=JSONがコスト情報を表示するように [ 1 ]STORED,VIRTUALな生成列のサポート(関数インデックス) [ 1- プリペアーステートメントの内部処理のリファクタと改良 [ 1 2 ]
- コメント構文
/*+ */を使用したヒント句 [ 1 ] - サーバーサイドでクエリーの書き換えを行うAPIの追加 [ 1 ]
- 標準に近付けるため、
ONLY_FULL_GROUP_BYを有効化 [ 1 ] - 文字コードgb18030のサポート [ 1 ]
- デフォルト値の変更:
internal_tmp_disk_storage_engine=INNODB[ 1 ] - デフォルト値の変更:
eq_range_index_dive_limit=200 - デフォルト値の変更:
sql_mode=ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION EXTENDED,PARTITIONSキーワードがEXPLAINの標準動作に
セキュリティ関連
- ユーザー名の最大長が32文字に拡大 [ 1 ]
CREATE/DROP USERステートメント内でのIF [NOT] EXISTSのサポート [ 1 ]- セキュアな接続(訳注: SSL接続)を強制するサーバーオプションの追加 [ 1 ]
- AESの複数キー長をサポート(訳注: 5.6.17にバックポート済み) [ 1 2 ]
- ユーザーアカウントの
LOCK/UNLOCKをサポート [ 1 2 ] - パスワードのEXPIREポリシーを追加 [ 1 2 ]
- 強固なパスワードの強制
- インストール時(訳注: データベース初期化時)、
testデータベースを作成しなくなった - インストール時(訳注: データベース初期化時)、匿名ユーザーを作成しなくなった
- MySQL Firewallの追加(商用版、5.6にバックポートされている)
- インストール時(訳注: データベース初期化時)、ランダムパスワードを生成するようになった
ALTER USERステートメントの追加SET password=''ステートメントがパスワードハッシュではなく生パスワードを要求するようになった(訳注: 旧来はSET PASSWORD = PASSWORD('..')とPASSWORD関数を挟む必要があったが、PASSWORD関数を挟まずに直接パスワードを渡すようになった)- サーバーがデフォルトでSSL接続用の鍵を作成するようになった
- 安全でない
old_passwordsハッシュ(訳注: 16桁ハッシュのパスワード)が削除された [ 1 ] - ストアドプログラムのためのログインできないユーザーを作成可能 [ 1 ]
mysql.user.passwordがauthentication_stringにリネームされた (訳注: リネームではなく5.5からauthentication_stringカラムはあったが、今まで利用されていなかった)
Performance Schema関連
- クライアントの接続/切断フェーズにおけるオーバーヘッドの減少
- メモリー使用量の減少
- pfs_lockの改良
- テーブルのI/O統計がバッチ化され、性能が向上
- メモリー使用量に関するテーブルの追加
- ストアドプログラムに関する情報の追加
- レプリケーションスレーブに関する情報の追加
- メタデータロック(MDL)に関する情報の追加
- トランザクションに関する情報の追加
- プリペアドステートメントに関する情報の追加
- クエリーの進行状況に関する情報の追加
- SXロックとrw_lockに関する情報の追加
- スレッド単位のステータスとサーバー変数に関する情報の追加(訳注:
SHOW SESSION STATUS,SHOW SESSION VARIABLES相当) - デフォルト値の変更:
performance-schema-consumer-events_statements_history=ON
GIS関連
- InnoDBの空間インデックス対応 [ 1 ]
- GIS関数の名前の整理 [ 1 ]
- GISをリファクタし、Boost Geometoryを使うように変更 [ 1 ]
- ジオハッシュ関数のサポート [ 1 2 ]
- ジオJSON関数のサポート [ 1 2 ]
ST_Distance_Sphere,ST_MakeEnvelope,ST_IsValid,ST_Validate,ST_Simplify,ST_Buffer,ST_IsSimpleの追加 [ 1 2 ]
トリガー関連
- 1テーブル1イベントに複数のトリガーを設定可能 [ 1 ]
BEFOREトリガーで非NULLな値を書き込む指定していた場合、NOT NULL制約のあるカラムに対しNULLがINSERT/UPDATEで指定できた問題の修正 [ 1 ]
パーティション関連
- インデックスコンディションプッシュダウンのサポート
HANDLERステートメントのサポートALTER TABLE ... EXCHANGE PARTITIONステートメントのWITHOUT VALIDATION句のサポート- トランスポータブル表領域(訳注:
FLUSH TABLES .. FOR UPDATE)のサポート - InnoDBのネイティブパーティショニングのサポート
SYSスキーマ関連 (MySQL 5.7からの新機能)
SYSスキーマの標準バンドル [ 1 2 ]- Performance SchemaとInformation Schemaと関連付けられた、100の新しいビュー、21の新しいストアドファンクション、26の新しいストアドプロシージャ [ 1 ]
JSON関連 (MySQL 5.7からの新機能)
- データ型としてJSON型をサポート [ 1 ]
- JSON比較関数の追加
JSON_EXTRACTと等価の短い演算子をサポート(filed->"json_path") [ 1 ]- JSONデータを作るための
JSON_ARRAY,JSON_MERGE,JSON_OBJECTの追加 [ 1 ] - JSONデータを検索するための
JSON_CONTAINS,JSON_CONTAINS_PATH,JSON_EXTRACT,JSON_KEYS,JSON_SEARCHの追加 [ 1 ] - JSONデータを更新するための
JSON_ARRAY_APPEND,JSON_ARRAY_INSERT,JSON_INSERT,JSON_QUOTE,JSON_REMOVE,JSON_REPLACE,JSON_UNSET,JSON_UNQUOTEの追加 [ 1 ] - JSONデータから値を返すための
JSON_DEPTH,JSON_LENGTH,JSON_TYPE,JSON_VALIDの追加 [ 1 ]
クライアント関連
mysqlpumpユーリティーの追加(訳注: mysql d umpではなくmysql p ump) [ 1 ]mysqlコマンドラインクライアントがCtrl + Cでステートメントバッファをクリアするように変更(訳注: 旧来はCtrl + Cでクライアントが終了していた)- mysqlbinlogに
rewrite-dbオプションが追加 - SSLのセットアップ用ユーティリティー
mysql_ssl_rsa_setupの追加 [ 1 ] - mysqlbinlogのSSLサポート
- mysqlbinlogの
idempotentオプションのサポート(訳注: http://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html#option_mysqlbinlog_idempotent) --sslオプションがSSL接続を強制するように変更(訳注: 旧来はSSL接続を試み、SSL接続できなかった場合は通常接続にフォールバックした)- innochecksumの機能拡張
- いくつかの古いコマンドラインユーティリティーの削除 [ 1 ]
- Perlで実装されていたいくつかのコマンドがC++で再実装
- クライアントサイドプロトコルトレースの追加
- コネクションをリセットするためのAPIの追加
libmysqlclient(訳注: クライアントライブラリー)関連
- エクスポートの制限されたいくつかの関数の追加
- pkg-configをサポート
_rのシンボリックリンクの削除- .soのバージョンを18から20に変更
ビルド関連
- Solaris用バイナリーのコンパイラーをgccに変更
- Bison3を利用してコンパイルされるように変更
- 全てのプラットフォームでCMakeが使われるように
- 不必要なCMakeのチェック(と、不必要なマクロがソースコードから)削除
- gcc, clang, MS Studioによるビルドをサポート
その他
- サーバーへの新規接続スループットの向上 [ 1 ]
mysql_install_dbのmysqld --initializeへの置き換え- syslogのサポート [ 1 2 ]
- systemdのサポート
disabled_storage_enginesオプションによる利用不可能なストレージエンジンの設定SET GLOBAL offline_mode=1[ 1 2 ]super_read_onlyオプションの追加 [ 1 ]- トランザクションの境界値の検出
- サーバーバージョンのトークンとチェック
SELECT GET_LOCK()が複数のロックを獲得できるように [ 1 2 ]- ステートメントの最大実行時間をグローバルまたはクエリー単位で指定可能 [ 1 2 ]
- コネクションIDのロールオーバーを効率化
- DTraceのサポート [ 1 ]
STRICTモード時のIGNORE句の一貫性の向上- いくつかのmysqlスキーマのテーブルがMyISAMからInnoDBに変更
- エラーログのフォーマットの一貫性の向上
- クエリーダイジェストの検出がperformance_schemaからサーバーコアに移動
- メタデータロックのスケーラビリティの向上
- エラーログの冗長モード管理を細分化
- Stacked Diagnostics Areaのサポート
- "SHUTDOWN"コマンド(訳注: SHUTDOWN ステートメント )のサポート
- アトミック性を確保するための独自実装のサポート廃止
- ユニークインデックスのプレフィックス指定をサーバー、ユーティリティーから削除
- ALTER IGNORE TABLEステートメントの廃止。互換性のため削除はされていない。
- INSERT DELAYEDステートメントの廃止。互換性のため削除はされていない。
- 古いsql-benchスクリプトの削除
- YEAR(2)データ型の廃止
- デフォルト値の変更:
log_warnings=2 - デフォルト値の変更:
table_open_cache_instances=1
このリストはMorgan Tockerによってまとめられた。 www.tocker.ca Github: morgo Twitter: morgo
(訳注: 翻訳は2015/10/20現在の内容を翻訳したものである。今後内容が変わる可能性がある) (訳注: オリジナル記事は Github で管理されており、 af1b65bc6660eb44273139f8718779b396bc7d71 までが記事に反映されている) (訳注: 訳注は yoku0825によってつけられている。間違いを見つけた場合は教えていただきたい)
