MySQL
世界で広く使われるオープンソースのリレーショナルデータベース管理システム
MySQL とは
MySQL (マイエスキューエル) は、世界で広く使われているオープンソースのリレーショナルデータベース管理システム (RDBMS) だ。データを表 (テーブル) の形で管理し、SQL という言語で操作する。動作が軽快で扱いやすく、Web アプリケーションのデータ保存先として長年定番の地位を占めてきた。
開発を担うのは Oracle の MySQL チームで、ソースコードは Community 版として公開されている。リリースは長期サポート (LTS) と Innovation の 2 系統に分かれる。LTS は最初の版でだけ機能の追加と削除を行い、それ以降は不具合と脆弱性の修正に絞るため、動かしているアプリの挙動が途中で変わらない。Innovation は新機能を早く取り込む代わりに、予約語の追加やクエリの実行のされ方といった挙動の変更を伴う。2026 年 8 月時点で公式のサポート案内が移行先として挙げているのは 8.4 LTS と 9.7 LTS の 2 系列で、LTS 系列には 5 年の premier support と 3 年の extended support が用意される。長く運用する業務システムなら LTS、新機能を追いたい開発環境なら Innovation という選び分けになる。
何に使われるか
| 用途 | 例 |
|---|---|
| Web アプリ | 会員情報、投稿、注文データの保存 |
| CMS | WordPress などのコンテンツ管理 |
| 業務システム | 在庫・顧客・取引の管理 |
PHP と組み合わせた Web 開発の構成は古くから広く使われ、多くのレンタルサーバーが標準で MySQL を提供している。
PostgreSQL との比較
| 観点 | MySQL | PostgreSQL |
|---|---|---|
| 既定の分離レベル | Repeatable Read | Read Committed |
| 同時実行制御 (MVCC) | undo ログ型 (更新前の値を退避) | 追記型 (不要行の回収に VACUUM が必要) |
| SQL 標準への準拠 | 中程度 (8.0 で改善) | 高い |
| 拡張のしかた | ストレージエンジンやプラグインの差し替え | 拡張モジュールの追加 |
実務で効いてくるのは既定の分離レベルの違いだ。MySQL の既定である Repeatable Read では、トランザクションを開いたまま同じ行を読み直しても最初に見た値のままになる。PostgreSQL の既定である Read Committed では文ごとに最新の確定値を読む。同じコードを両者で動かしても結果が揃うとは限らないので、移行時はここを最初に確認する。速さなら MySQL、機能なら PostgreSQL という語られ方は 8.0 で標準準拠が進んだ後は当てはまりが悪くなっており、既定値と運用の作法の違いで選ぶほうが実態に合う。
内部の仕組み
既定のストレージエンジンは InnoDB で、トランザクション (複数の更新をまとめて確定または取り消しする単位) と行単位のロックを扱う。更新時は変更前の値を undo ログへ退避し、読み取り側はそこから自分に見えるべき過去の姿を組み立てる。この仕組みのおかげで参照は更新にほとんど待たされないが、開いたまま放置されたトランザクションは undo ログを溜め込み、ディスクと参照性能を圧迫する。長いトランザクションを避けるのは作法ではなく性能上の要請だ。
読み取りの負荷を分散する定番の手段はレプリケーションで、更新内容を記録したバイナリログを複製先が受け取って自分に適用する。既定では非同期のため複製先の反映は遅れることがあり、書き込んだ直後に複製先を読むと古い値が返る。投稿した本人にすぐ見せる必要がある画面は書き込み先から読む、といった経路の切り分けが要る。
利用時の注意点
MySQL は使い始めが簡単だが、データ量が増えると性能設計が重要になる。インデックスの設計、適切なテーブル構造、効率的なクエリが性能を左右する。また、外部入力をそのまま SQL に渡すと SQL インジェクションの脆弱性を生むため、安全な書き方が必須だ。バックアップと権限管理を怠ると、データ消失や情報漏洩につながる。データは事業の根幹であり、その保管基盤は慎重に運用する必要がある。
版を上げるときは、LTS 系列を飛び越える移行が公式にはサポートされない点も見落としやすい。8.4 から 9.7 の次の LTS へ直行はできず、間の 9.7 を経由する。
手を動かして覚えるなら、数十万行を入れたテーブルに対して EXPLAIN でインデックスが使われているかを確かめるところから始めるとよい。全表走査になっているクエリを 1 本見つけて索引を足し、実行時間の変化を測る。この一往復が設計の勘所をいちばん早く教えてくれる。
この記事は役に立ちましたか?
関連用語
関連する記事
障害対応の夜に思い出す、あの本の 1 ページ
本番障害の緊迫した場面で、過去に読んだ技術書の知識が助けてくれた経験はありませんか。「いつか役立つ」知識が「今この瞬間」に変わる読書の価値を考えます。
体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版は初版と何が違うか - 買い直し判断ガイド
通称「徳丸本」こと体系的に学ぶ 安全な Web アプリケーションの作り方 第 2 版 (2018 年) と初版 (2011 年) の違いを出版社公表の改訂内容から整理。章の削除 / 新設 / 追加点の一覧と、初版所有者が買い直すべきかの判断基準を解説します。
データベース本ガイド - SQL から設計まで学べる技術書の選び方
データベースの基礎から設計、パフォーマンスチューニングまで学べる技術書の選び方と学習順序を紹介します。