Yakstは、海外の役立つブログ記事などを人力で翻訳して公開するプロジェクトです。
2年弱前投稿 修正あり

MySQL 5.7の新機能完全リスト

MySQL Community ManagerのMorgan TockerによるMySQL 5.7の新機能完全リスト
原文 Complete list of new features in MySQL 5.7 (English)
翻訳者 0deae06ab5d86b39feeec2e23a30b88a yoku0825


MySQL 5.7には150を超える新機能がある。

MySQLのマニュアルはとてもいいものだが、少し長すぎる。これは、新機能の箇条書きリストだ。それぞれの機能について1つずつまとめるように頑張ってある。なので、 InnoDBのネイティブパーティショニング については、InnoDBの項かパーティショニングの項のどちらかにだけ載っている。

MySQL 5.7.8 RC2はここからダウンロードできる

それか、yumaptのリポジトリーからもインストール可能だ。

レプリケーション関連

  1. マルチソースレプリケーション(訳注: 1スレーブに複数マスターを設定可能になった) [ 1 ]
  2. オンラインでのGTIDの有効化 [ 1 2 3 ]
  3. 準同期レプリケーションの性能向上 [ 1 2 ]
  4. ロスレス準同期レプリケーション [ 1 2 ]
  5. 準同期レプリケーションでいくつのスレーブからACKが返ってくるまで待つかを指定できるように(訳注: 従来は1台で固定だった) [ 1 ]
  6. 同一スキーマ内での並列レプリケーション [ 1 ]
  7. binlog_group_commit_sync_delay及びbinlog_group_commit_sync_no_delay_countオプションによるグループコミットのチューニング [ 1 2 ]
  8. ノンブロッキングSHOW SLAVE STATUS [ 1 2 ]
  9. CHANGE REPLICATION FILTERによるオンラインでのレプリケーションフィルター(訳注: replicate_do_*, replicate_ignore_*オプション相当) [ 1 ]
  10. SQLスレッドを停止することなく発行できるCHANGE MASTER TO [ 1 ]
  11. マルチスレッドスレーブのコミット順(シーケンス上の一貫性)の保証 [ 1 ]
  12. マルチスレッドスレーブのslave_transaction_retriesオプションのサポート(訳注: 旧来はマルチスレッドスレーブ時はリトライしなかった) [ 1 ]
  13. WAIT_FOR_EXECUTED_GTID_SET関数の追加 [ 1 2 ]
  14. スレーブでのGTID最適化 [ 1 2 ]
  15. log-slave-updatesが無効でもGTIDを有効にできるように変更
  16. binlog有効時のXAのサポート [ 1 ]
  17. OKパケット内部にGTIDを埋め込むように変更 [ 1 ]
  18. マスターのBinlogダンプスレッドとユーザースレッドとの競合時の処理の向上 [ 1 2 ]
  19. Binlogダンプスレッドのメモリマネージメントの改良 [ 1 ]
  20. デフォルト値の変更: binlog_format=ROW
  21. デフォルト値の変更: sync_binlog=1
  22. デフォルト値の変更: binlog_gtid_simple_recovery=1
  23. デフォルト値の変更: binlog_error_action=ABORT_SERVER
  24. デフォルト値の変更: slave_net_timeout=60

InnoDB関連

  1. オンラインでのバッファプールサイズ変更 [ 1 ]
  2. クラッシュリカバリーのパフォーマンス向上 [ 1 ]
  3. 読み込みしか行わないトランザクションのスケーラビリティー向上 [ 1 2 3 4 ]
  4. 読み書き両方を行うトランザクションのスケーラビリティー向上 [ 1 2 3 4 ]
  5. テンポラリーテーブルのための最適化 [ 1 2 3 4 5 ]
  6. ALTER TABLE RENAME INDEXがメタデータの変更のみで可能(訳注: オンラインALTER TABLEが可能) [ 1 ]
  7. VARCHARのサイズ変更がメタデータの変更のみで可能(訳注: オンラインALTER TABLEが可能、ただし変更前と変更後のサイズが256をまたがない場合に限る) [ 1 ]
  8. ALTER TABLEのパフォーマンス向上 [ 1 ]
  9. 複数のページクリーナースレッド(訳注: バッファプールのダーティーページを非同期にフラッシュするスレッド)を設定可能 [ 1 ]
  10. バッファプールのフラッシングの最適化 [ 1 ]
  11. innodb_log_checksum_algorithmオプションの追加 [ 1 ]
  12. NUMAサポートの改善 [ 1 ]
  13. ジェネラルテーブルスペース(訳注: 任意のテーブルが任意のibdファイルに割り当て可能になる)のサポート [ 1 ]
  14. 透過的ページ圧縮のサポート [ 1 ]
  15. REDOログの'read-on-write'問題に対するinnodb_log_write_ahead_sizeオプションの追加 [ 1 ]
  16. 全文検索がフルテキストパーサープラグインをサポート [ 1 ]
  17. N-gram、MeCabフルテキストパーサーのサポート [ 1 2 ]
  18. 全文検索の最適化 [ 1 ]
  19. バッファプールダンプ(訳注: バッファプールウォームアップのためにページ番号を書き出す処理)にinnodb_buffer_pool_dump_pctオプションを追加 [ 1 ]
  20. ファイルシステムがアトミックライトをサポートしている場合(Fusion-ioがよく知られている)ダブルライトバッファを無効化する処理 [ 1 ]
  21. ページフィルファクター(訳注: ページの何%が削除された時に、隣のページとマージされるかの閾値)が設定可能に [ 1 ]
  22. 32K, 64Kのページサイズのサポート [ 1 ]
  23. UNDOログのオンラインでの縮小 [ 1 ]
  24. メタデータ上のUpdate_timeが正しく記録されるように変更 [ 1 ]
  25. TRUNCATE TABLEがアトミックな操作に変更 [ 1 ]
  26. Memcached APIのパフォーマンス向上 [ 1 ]
  27. Adaptive Hashのスケーラビリティーを向上 [ 1 ]
  28. information_schema.filesがInnoDBをサポート(訳注: 旧来はNDBのみ) [ 1 ]
  29. 古いInnoDB Monitorを有効化するためのテーブルが削除(訳注: CREATE TABLE innodb_monitor ( a int ) Engine= InnoDBが廃止)され、グローバル変数で有効/無効を切り替えるように変更
  30. デフォルトのROW_FORMATが設定可能に [ 1 ]
  31. デフォルト値の変更: innodb_file_format=Barracuda
  32. デフォルト値の変更: innodb_large_prefix=1
  33. デフォルト値の変更: innodb_page_cleaners=4
  34. デフォルト値の変更: innodb_purge_threads=4
  35. デフォルト値の変更: innodb_buffer_pool_dump_at_shutdown=1
  36. デフォルト値の変更: innodb_buffer_pool_load_at_startup=1
  37. デフォルト値の変更: innodb_buffer_pool_dump_pct=25
  38. デフォルト値の変更: innodb_strict_mode=1
  39. デフォルト値の変更: innodb_checksum_algorithm=crc32
  40. デフォルト値の変更: innodb_default_row_format=DYNAMIC

オプティマイザー関連

  1. 実行計画の安定化のためのコストモデルオプティマイズ [ 1 2 3 4 ]
  2. グローバルまたはエンジン単位で設定可能なコスト値 [ 1 2 ]
  3. パーサーのリファクタと改良 [ 1 ]
  4. EXPLAIN FOR CONNECTION [ 1 ]
  5. UNION ALLがテンポラリーテーブルを作成しなくなった [ 1 2 3 4 ]
  6. ファイルソートがパックした値を利用して行われるようになった(訳注: 旧来はvarchar(255)は255文字分の領域をファイルソートで使っていたが、今後は本当に詰められている文字数分だけを利用する) [ 1 ]
  7. FROM句のサブクエリーがビューと同じように扱われるようになった(訳注: 不要なマテリアライズを避けるようになった) [ 1 ]
  8. 行コンストラクター(訳注: WHERE (a, b, c)= (1, 2, 3)のようなもののこと)を利用したクエリーの最適化 [ 1 2 ]
  9. コンディションフィルタリングのサポート [ 1 2 ]
  10. EXPLAIN FORMAT=JSONがコスト情報を表示するように [ 1 ]
  11. STORED, VIRTUALな生成列のサポート(関数インデックス) [ 1
  12. プリペアーステートメントの内部処理のリファクタと改良 [ 1 2 ]
  13. コメント構文 /*+ */を使用したヒント句 [ 1 ]
  14. サーバーサイドでクエリーの書き換えを行うAPIの追加 [ 1 ]
  15. 標準に近付けるため、ONLY_FULL_GROUP_BYを有効化 [ 1 ]
  16. 文字コードgb18030のサポート [ 1 ]
  17. デフォルト値の変更: internal_tmp_disk_storage_engine=INNODB [ 1 ]
  18. デフォルト値の変更: eq_range_index_dive_limit=200
  19. デフォルト値の変更: 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
  20. EXTENDED, PARTITIONSキーワードがEXPLAINの標準動作に

セキュリティ関連

  1. ユーザー名の最大長が32文字に拡大 [ 1 ]
  2. CREATE/DROP USERステートメント内でのIF [NOT] EXISTSのサポート [ 1 ]
  3. セキュアな接続(訳注: SSL接続)を強制するサーバーオプションの追加 [ 1 ]
  4. AESの複数キー長をサポート(訳注: 5.6.17にバックポート済み) [ 1 2 ]
  5. ユーザーアカウントのLOCK/UNLOCKをサポート [ 1 2 ]
  6. パスワードのEXPIREポリシーを追加 [ 1 2 ]
  7. 強固なパスワードの強制
  8. インストール時(訳注: データベース初期化時)、testデータベースを作成しなくなった
  9. インストール時(訳注: データベース初期化時)、匿名ユーザーを作成しなくなった
  10. MySQL Firewallの追加(商用版、5.6にバックポートされている)
  11. インストール時(訳注: データベース初期化時)、ランダムパスワードを生成するようになった
  12. ALTER USERステートメントの追加
  13. SET password=''ステートメントがパスワードハッシュではなく生パスワードを要求するようになった(訳注: 旧来はSET PASSWORD = PASSWORD('..')とPASSWORD関数を挟む必要があったが、PASSWORD関数を挟まずに直接パスワードを渡すようになった)
  14. サーバーがデフォルトでSSL接続用の鍵を作成するようになった
  15. 安全でないold_passwordsハッシュ(訳注: 16桁ハッシュのパスワード)が削除された [ 1 ]
  16. ストアドプログラムのためのログインできないユーザーを作成可能 [ 1 ]
  17. mysql.user.passwordauthentication_stringにリネームされた (訳注: リネームではなく5.5からauthentication_stringカラムはあったが、今まで利用されていなかった)

Performance Schema関連

  1. クライアントの接続/切断フェーズにおけるオーバーヘッドの減少
  2. メモリー使用量の減少
  3. pfs_lockの改良
  4. テーブルのI/O統計がバッチ化され、性能が向上
  5. メモリー使用量に関するテーブルの追加
  6. ストアドプログラムに関する情報の追加
  7. レプリケーションスレーブに関する情報の追加
  8. メタデータロック(MDL)に関する情報の追加
  9. トランザクションに関する情報の追加
  10. プリペアドステートメントに関する情報の追加
  11. クエリーの進行状況に関する情報の追加
  12. SXロックとrw_lockに関する情報の追加
  13. スレッド単位のステータスとサーバー変数に関する情報の追加(訳注: SHOW SESSION STATUS, SHOW SESSION VARIABLES相当)
  14. デフォルト値の変更: performance-schema-consumer-events_statements_history=ON

GIS関連

  1. InnoDBの空間インデックス対応 [ 1 ]
  2. GIS関数の名前の整理 [ 1 ]
  3. GISをリファクタし、Boost Geometoryを使うように変更 [ 1 ]
  4. ジオハッシュ関数のサポート [ 1 2 ]
  5. ジオJSON関数のサポート [ 1 2 ]
  6. ST_Distance_Sphere, ST_MakeEnvelope, ST_IsValid, ST_Validate, ST_Simplify, ST_Buffer, ST_IsSimpleの追加 [ 1 2 ]

トリガー関連

  1. 1テーブル1イベントに複数のトリガーを設定可能 [ 1 ]
  2. BEFOREトリガーで非NULLな値を書き込む指定していた場合、NOT NULL制約のあるカラムに対しNULLがINSERT/UPDATEで指定できた問題の修正 [ 1 ]

パーティション関連

  1. インデックスコンディションプッシュダウンのサポート
  2. HANDLERステートメントのサポート
  3. ALTER TABLE ... EXCHANGE PARTITIONステートメントのWITHOUT VALIDATION句のサポート
  4. トランスポータブル表領域(訳注: FLUSH TABLES .. FOR UPDATE)のサポート
  5. InnoDBのネイティブパーティショニングのサポート

SYSスキーマ関連 (MySQL 5.7からの新機能)

  1. SYSスキーマの標準バンドル [ 1 2 ]
  2. Performance SchemaとInformation Schemaと関連付けられた、100の新しいビュー、21の新しいストアドファンクション、26の新しいストアドプロシージャ [ 1 ]

JSON関連 (MySQL 5.7からの新機能)

  1. データ型としてJSON型をサポート [ 1 ]
  2. JSON比較関数の追加
  3. JSON_EXTRACTと等価の短い演算子をサポート(filed->"json_path") [ 1 ]
  4. JSONデータを作るためのJSON_ARRAY, JSON_MERGE, JSON_OBJECTの追加 [ 1 ]
  5. JSONデータを検索するためのJSON_CONTAINS, JSON_CONTAINS_PATH, JSON_EXTRACT, JSON_KEYS, JSON_SEARCHの追加 [ 1 ]
  6. JSONデータを更新するためのJSON_ARRAY_APPEND, JSON_ARRAY_INSERT, JSON_INSERT, JSON_QUOTE, JSON_REMOVE, JSON_REPLACE, JSON_UNSET, JSON_UNQUOTEの追加 [ 1 ]
  7. JSONデータから値を返すためのJSON_DEPTH, JSON_LENGTH, JSON_TYPE, JSON_VALIDの追加 [ 1 ]

クライアント関連

  1. mysqlpumpユーリティーの追加(訳注: mysql d umpではなくmysql p ump) [ 1 ]
  2. mysqlコマンドラインクライアントがCtrl + Cでステートメントバッファをクリアするように変更(訳注: 旧来はCtrl + Cでクライアントが終了していた)
  3. mysqlbinlogにrewrite-dbオプションが追加
  4. SSLのセットアップ用ユーティリティーmysql_ssl_rsa_setupの追加 [ 1 ]
  5. mysqlbinlogのSSLサポート
  6. mysqlbinlogのidempotentオプションのサポート(訳注: http://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html#option_mysqlbinlog_idempotent)
  7. --sslオプションがSSL接続を強制するように変更(訳注: 旧来はSSL接続を試み、SSL接続できなかった場合は通常接続にフォールバックした)
  8. innochecksumの機能拡張
  9. いくつかの古いコマンドラインユーティリティーの削除 [ 1 ]
  10. Perlで実装されていたいくつかのコマンドがC++で再実装
  11. クライアントサイドプロトコルトレースの追加
  12. コネクションをリセットするためのAPIの追加

libmysqlclient(訳注: クライアントライブラリー)関連

  1. エクスポートの制限されたいくつかの関数の追加
  2. pkg-configをサポート
  3. _rのシンボリックリンクの削除
  4. .soのバージョンを18から20に変更

ビルド関連

  1. Solaris用バイナリーのコンパイラーをgccに変更
  2. Bison3を利用してコンパイルされるように変更
  3. 全てのプラットフォームでCMakeが使われるように
  4. 不必要なCMakeのチェック(と、不必要なマクロがソースコードから)削除
  5. gcc, clang, MS Studioによるビルドをサポート

その他

  1. サーバーへの新規接続スループットの向上 [ 1 ]
  2. mysql_install_dbmysqld --initializeへの置き換え
  3. syslogのサポート [ 1 2 ]
  4. systemdのサポート
  5. disabled_storage_enginesオプションによる利用不可能なストレージエンジンの設定
  6. SET GLOBAL offline_mode=1 [ 1 2 ]
  7. super_read_onlyオプションの追加 [ 1 ]
  8. トランザクションの境界値の検出
  9. サーバーバージョンのトークンとチェック
  10. SELECT GET_LOCK()が複数のロックを獲得できるように [ 1 2 ]
  11. ステートメントの最大実行時間をグローバルまたはクエリー単位で指定可能 [ 1 2 ]
  12. コネクションIDのロールオーバーを効率化
  13. DTraceのサポート [ 1 ]
  14. STRICTモード時のIGNORE句の一貫性の向上
  15. いくつかのmysqlスキーマのテーブルがMyISAMからInnoDBに変更
  16. エラーログのフォーマットの一貫性の向上
  17. クエリーダイジェストの検出がperformance_schemaからサーバーコアに移動
  18. メタデータロックのスケーラビリティの向上
  19. エラーログの冗長モード管理を細分化
  20. Stacked Diagnostics Areaのサポート
  21. "SHUTDOWN"コマンド(訳注: SHUTDOWN ステートメント )のサポート
  22. アトミック性を確保するための独自実装のサポート廃止
  23. ユニークインデックスのプレフィックス指定をサーバー、ユーティリティーから削除
  24. ALTER IGNORE TABLEステートメントの廃止。互換性のため削除はされていない。
  25. INSERT DELAYEDステートメントの廃止。互換性のため削除はされていない。
  26. 古いsql-benchスクリプトの削除
  27. YEAR(2)データ型の廃止
  28. デフォルト値の変更: log_warnings=2
  29. デフォルト値の変更: table_open_cache_instances=1

このリストはMorgan Tockerによってまとめられた。 www.tocker.ca Github: morgo Twitter: morgo

(訳注: 翻訳は2015/10/20現在の内容を翻訳したものである。今後内容が変わる可能性がある) (訳注: オリジナル記事は Github で管理されており、 af1b65bc6660eb44273139f8718779b396bc7d71 までが記事に反映されている) (訳注: 訳注は yoku0825によってつけられている。間違いを見つけた場合は教えていただきたい)

次の記事
InnoDBの透過的ページ圧縮(MySQL Server Blogより)
前の記事
MySQL 5.6と5.7における高度なクエリチューニングのQ&A(The Percona Performance Blogより)

Feed small 記事フィード