データベース製品

MySQLの特徴 まいえすきゅーえるのとくちょう

MySQLInnoDBLAMPオープンソースWeb開発Oracle
MySQLの特徴について教えて

簡単に言うとこんな感じ!

MySQLは「世界で最も使われているオープンソースRDB」だよ!WordPressのほぼ全サイト、FacebookやTwitterの初期基盤も使っていたほど実績がある。Linux・Apache・MySQL・PHPの「LAMP」スタックはWebの世界を変えたんだ。シンプルで使いやすく、スタートアップからエンタープライズまで幅広く使われてるんだ!


MySQLとは

MySQLとは、スウェーデンのMySQL ABが1995年に開発したオープンソースのリレーショナルデータベース管理システム(RDBMS)です。2008年にSun Microsystems、2010年にOracleが買収しました。GPLライセンス(Community Edition)と商用ライセンス(Enterprise Edition)のデュアルライセンスで提供されています。

MySQLの最大の特徴はシンプルさと高い読み取り性能です。LAMP(Linux・Apache・MySQL・PHP)スタックの一角として、2000年代のWebブームを支えました。WordPress・Drupal・Joomlaなど多くのCMSがデフォルトDBとしてMySQLを採用しており、世界で最も多くのWebサイトで使われているRDBと言われています。

MySQLのストレージエンジンは複数あり、デフォルトはInnoDB(ACID準拠・外部キー対応・行レベルロック)です。以前はMyISAM(シンプルだがACID非対応)が標準でしたが、MySQL 5.5(2010年)からInnoDBがデフォルトになりました。またMySQL 8.0(2018年)でウィンドウ関数・CTE・JSONサポートが強化され、モダンなSQLに対応しました。


MySQLの主な特徴

特徴説明
高い読み取り性能読み取り中心のWebアプリに最適。読み取りレプリカが使いやすい
デュアルライセンスCommunity版(GPL)は無料・Enterprise版は有料サポート付き
InnoDBエンジンACID・外部キー・行レベルロック・MVCC対応
レプリケーションMaster/Slave(Source/Replica)構成が容易
クラウド対応Amazon RDS・Aurora・Google Cloud SQL・Azure DB等でマネージド提供
MySQL Shell管理・自動化・JavaScript/Python対応のモダンCLI
JSONサポートMySQL 5.7以降でJSONデータ型・JSON関数をサポート
MySQLのアーキテクチャ概要 クライアント層 MySQL CLI MySQL Shell JDBC/ODBC コネクタ 各言語ドライバ MySQLサーバー層(SQL Parser・Optimizer・Cache) クエリキャッシュ クエリパーサー クエリオプティマイザー 実行エンジン InnoDBストレージエンジン ACID・外部キー 行レベルロック MVCC・クラッシュ安全 その他エンジン MyISAM / Memory等 ファイルシステム ibdata / .ibd ファイル Amazon Aurora(MySQL互換) ストレージを分離しスケーラブルに。クラスタストレージで最大128TB・自動フェイルオーバー

歴史と背景

  • 1995年:MySQL 1.0リリース。スウェーデンのMySQL ABが開発
  • 2000年:GPL化。LAMPスタックの一角としてWebサービスに爆発的に普及
  • 2006年:MySQL 5.1リリース。パーティション・イベントスケジューラ等を追加
  • 2008年:Sun MicrosystemsがMySQL ABを10億ドルで買収
  • 2010年:OracleがSunを買収→MySQLもOracle傘下に。MariaDBが派生プロジェクトとして誕生
  • 2013年:MySQL 5.6。パフォーマンス大幅向上・全文検索強化
  • 2018年:MySQL 8.0。ウィンドウ関数・CTE・JSON強化・utf8mb4がデフォルトに
  • 現在:MySQL 8.0/8.4が主流。Amazon Aurora MySQLが大規模サービスで広く採用

MySQL vs PostgreSQL(代表的な違い)

観点MySQLPostgreSQL
ライセンスGPL + 商用PostgreSQL License(制限なし)
標準SQL準拠度やや低い(方言あり)高い(標準に忠実)
読み取り性能優れる同等以上(複雑クエリは有利)
JSON/配列型JSON型(5.7以降)JSON/JSONB・配列型が充実
レプリケーションシンプルで設定しやすいより柔軟なレプリケーション
拡張性限定的プラグイン・拡張が豊富

関連する規格・RFC

規格・RFC番号内容
ISO/IEC 9075 (SQL標準)MySQLが準拠するSQL標準
MySQL Wire ProtocolMySQL独自のクライアント通信プロトコル
InnoDB File FormatMySQLのInnoDBストレージフォーマット仕様

関連用語