MySQL / InnoDB エンジン(マイエスキューエル)
Michael "Monty" Widenius / David Axmark 1995年公開のオープンソースRDBMS。MyISAM (旧) / InnoDB (現主流) ストレージエンジン、Web アプリの定番DB。
概要
MySQL はMichael "Monty" Widenius / David Axmark / Allan Larsson が1995年5月にMySQL AB (スウェーデン) を設立・公開したオープンソースRDBMS。当初はMyISAM (Monty の娘"My" 由来) ストレージエンジン使用、2001年InnoDB (フィンランドInnobase Oy・Heikki Tuuri) 統合でACID トランザクション対応。2008年Sun Microsystems が$1B で MySQL AB買収・2010年Oracle がSun を買収しMySQL 取得、現在Oracle 傘下。Web アプリの定番DB として LAMP (Linux/Apache/MySQL/PHP) スタックで圧倒的普及。
主要マイルストーン
| 年月 | 出来事 |
|---|---|
| 1995-05 | MySQL 1.0 公開 |
| 2000-10 | MyISAM v2.0 (Index Compression) |
| 2001-03 | InnoDB エンジン統合 |
| 2008-01 | Sun が$1B でMySQL AB 買収 |
| 2010-01 | Oracle がSun 買収 |
| 2010-02 | Monty が MariaDB フォーク開始 |
| 2010-12 | MySQL 5.5 (InnoDB デフォルト化) |
| 2015-10 | MySQL 5.7 (JSON / NoSQL風機能) |
| 2018-04 | MySQL 8.0 (CTE / Window関数) |
| 2024-04 | MySQL 9.0 (Innovation Release) |
| 2024 | MySQL 8.4 LTS |
InnoDB ストレージエンジン
MySQL 5.5+ のデフォルトストレージエンジン:
- ACID トランザクション完全対応
- MVCC (PostgreSQL と類似だが実装異)
- 行レベルロック
- 外部キー制約
- クラスタ化インデックス (Primary Key 順物理格納)
- Crash Recovery (Redo Log / Undo Log)
- Buffer Pool (RAM キャッシュ)
MyISAM vs InnoDB
| 項目 | MyISAM | InnoDB |
|---|---|---|
| ACID | ❌ | ✅ |
| トランザクション | ❌ | ✅ |
| ロック | テーブル | 行 |
| 外部キー | ❌ | ✅ |
| 全文検索 | ✅ (古い) | ✅ (5.6+) |
| 速度 (Read) | 速い | 中 |
| 速度 (Write) | 中 | 中-速 |
| ストレージ容量 | 小 | 中 (overhead) |
| Crash Recovery | 困難 | 完璧 |
現代MySQL は InnoDB がデフォルト・MyISAM は読み込み専用テーブル等の特殊用途のみ。
MariaDB (フォーク)
2009年Oracle のSun 買収発表で「MySQL がOracle のクローズド化される」懸念があり、Monty Widenius が「Monty Program AB」で MariaDB をフォーク開始 (2009-2010):
| 機能 | MySQL | MariaDB |
|---|---|---|
| InnoDB | ◯ | ◯ (拡張版) |
| Aria エンジン | - | ◯ (MyISAM 改良) |
| ColumnStore | - | ◯ (分析特化) |
| MyRocks | - | ◯ (Facebook 由来) |
| Galera Cluster | - | ◯ (マルチマスター) |
| Connect/J | ◯ | ◯ (互換) |
| クライアント互換 | - | 100% |
MariaDB はFedora / Debian / RHEL 等の主要Linux Distro が MySQL 代替として2014-2018年デフォルト化、ユーザは知らずに使うケース多。
主要採用先
| 企業 | 用途 |
|---|---|
| MyRocks (MySQL派生) | |
| YouTube | Vitess (MySQL分散) |
| Twemcache + MySQL | |
| Booking.com | 大規模MySQL |
| WordPress.com | 全Blog backend |
| Wikipedia | MySQL/MariaDB |
| Tumblr | MySQL |
| Uber | MySQL → Schemaless |
関連用語との違い
- vs PostgreSQL: MVCC両方・PG は標準準拠・MySQL は速度
- vs MariaDB: 親 / フォーク・互換性高
- vs SQLite: 大規模 / 組込み
FAQ
Q1: MySQL と MariaDB どちら? A: 純粋オープン重視ならMariaDB。Oracle商用サポート必要ならMySQL。互換性100% (5.7まで)、8.0+ は微妙な非互換あり。
Q2: NoSQL機能? A: MySQL 5.7+ JSON フィールド・8.0 JSON Schema 等で「NoSQL風」機能あるが、PostgreSQL JSONB ほどではない。
Q3: 大規模スケーリング? A: 古典的にレプリケーション・パーティション。Vitess (YouTube・CNCF Graduated) で水平スケール可能。