LoginSignup
21
15

More than 3 years have passed since last update.

MySQLのバージョンごとの違いについて調査した

Last updated at Posted at 2021-02-11

MySQLのバージョンによる機能の違いについて

MySQLについて、簡単に

  • MySQLは世界で最も普及しているオープンソースのRDSMS. リポジトリはこちら.
  • MySQLはSQLパーサとストレージエンジンが分離していて、用途に応じたストレージエンジンを採用することができる。

MySQLのバージョンについて

ex)MySQL5.1.30という表記をした場合

  • 最初の数字(ex. 5)がメジャーバージョンおよびファイル形式を表す。特定のメジャーバージョンでファイル形式は変わらない。

  • 2番目の数字(ex. 1)がリリースレベルで、バージョンアップにはメジャーな機能の追加や旧バージョンとのマイナーな非互換性が含まれる。

  • 3番目の数字(ex. 30)は、新しいリリース毎に数が増える。バージョンアップにはリリースレベルでの安定性の改善が含まれる。

  • リリース名には、リリースの安定性を占めるサフィックスが含まれることがある。サフィックスがない場合、GAリリースとなる。

参考: MySQL公式リファレンス

歴史

  • 2001 MySQL3.23が最初のプロダクションリリース.
  • 2003 MySQL4.0がリリースされる.
  • 2005 MySQL5.0がリリースされる.
  • 2008 MySQL5.1がリリースされる(5.1.30よりGA).
  • 2010 MySQL5.5がリリースされる(5.5.8よりGA).デフォルトのストレージエンジンがMyISAMからInnoDBになる.
  • 2013 MySQL5.6がリリースされる(5.6.10よりGA).InnoDB、NoSQLの機能強化.
  • 2015 MySQL5.7がリリースされる(5.7.9よりGA).レプリケーション機能の拡充やInnoDBの改善、パフォーマンス改善など.
  • 2018 MySQL8.0がリリースされる(8.0.11よりGA).

サポート

  • オープンソース版のMySQL Community Editionでは4以前のバージョンはサポートが終了している.
  • AWSのRDSでは2020年にMySQL5.6のサポートが終了している.

参考: MySQL | Wikipedia

MyISAMとInnoDBについて

  • MyISAMはシンプルな設計ゆえに高速であるが単純なデータ構造やリレーション、クエリを想定している.
  • MyISAMは外部キー制約をサポートしていないが、innoDBはサポートしている.
  • MyISAMはテーブルレベルの排他ロックしか実行できないのに対して、InnoDBは行レベルで共有ロックと排他ロックが組み合わされる.
  • MyISAMではACIDなトランザクションが実装されていないのに対して、InnoDBでは実装されている.
  • MyISAMでは、テーブルのキャッシュ管理をOSに任せているのに対して、InnoDBでは管理者が動的変数innodb_buffer_pool_sizeで設定することができる.

MySQL5.5 -> MySQL5.6

  • GTID(Global Transaction ID)によって、マスタ-レプリケーション構成の時にトポロジー全体でユニークなIDがトランザクションに与えられる.
  • パラメータのデフォルト値が変わり、デフォルト設定で優れたパフォーマンスが出るようになった. back_log(未解決の接続要求の上限)の値が、max_connectionsの値に比例して自動で調整される、など.
  • カーネルmutexを分割することによる競合の軽減、フラッシュ操作の効率改善などのInnoDBのパフォーマンス改善.
  • InnoDBのページサイズを、インスタンス作成時にパラメータとして設定できるようになった。ワークロードの性質に応じたページサイズにチューニングできる.

など

MySQL5.6 -> MySQL5.7

  • パフォーマンスがMySQL5.6の3倍になったとされる.

  • マルチソースレプリケーション(マスタ-スレーブ構成で複数マスタの選択が可能)機能が追加される.

  • InnoDBのバッファプールサイズをオンラインで変えられるようになったり、オンラインでインデックス名を変えられるようになったり、InnoDBが改善された.

  • クエリの最適化に使える機能が追加された.

  • パスワードの有効期限が設定できるようになったり、DB管理者がユーザアカウントをロックできるようになったり、セキュリティが向上した.

など

MySQL5.7 -> MySQL8.0

  • パフォーマンスがMySQL5.7より2倍高速になったとされる.
  • デフォルトのキャラクタセットがutf8mb4になった.
  • SQLを関数のように定義してネーミングすることで、複雑なSQLをシンプルなSQLを組み合わせて構築することができるCTE(Common Table Expression)という機能が追加された.
  • コマンドラインからmysqldの再起動をまたいで永続的に反映されるパラメータ設定ができるSET PERSIST構文が追加された.
  • mysqldの起動や停止をクライアント接続で行えるようになった.
  • Window関数が実装された.
  • JSON関連の機能が拡充された

など

参考:

MySQL 5.6 リファレンスマニュアル2.11.1.3 MySQL 5.5 から 5.6 へのアップグレード

MySQL 5.7 Reference Manual 2.11.3 Changes in MySQL 5.7

MySQL 8.0 Reference Manual 2.11.4 Changes in MySQL 8.0

運用視点なMyISAMとInnoDBと。

MySQL 5.7の重要機能まとめ

21
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
15