MySQLは、Oracleが開発してサポートするオープンソースのSQLリレーショナルデータベース管理システムです。

データベースとは、データを簡単に使用したり取得したりできるよう、データをまとめて構造化したものです。WordPressサイトにおける「データ」とは、投稿の内容、アカウントに登録しているユーザー情報、自動読み込みデータ、重要な設定などを意味します。

MySQLは、人気データベースの1つで、WordPressサイトで特に広く使用されています(関連して、WordPressの「MySQL Server Has Gone Away」エラーを解決する方法MySQL 1064エラーの解決方法はこちら

今回は、MySQLについてわかりやすく解説していきます。

MySQLとは

MySQLは、1995年にリリースされました。リリース後、所有者や管理者が何度か変わった後、2010年にオラクルによって買収されました。現在もオラクルによって管理されていますが、MySQLは以前としてオープンソースソフトウェアであり、誰でも自由に使用・変更することができます。

MySQLのロゴ(画像出典:MySQL/Oracle)
MySQLのロゴ(画像出典:MySQL/Oracle

共同設立者の娘の名前「My」と、リレーショナルデータベースのデータにアクセスして管理できるStructured Query Language(日本語では「構造化照会言語」とも)の略称である「SQL」を組み合わせて、MySQLという名前が生まれました。

MySQLの仕組みを理解するには、まず以下2つについて知ることが重要です。

リレーショナルデータベース

データベースへのデータの保存方法にはいくつか種類があり、MySQLの場合は、「リレーショナルデータベース」に当たります。

リレーショナルデータベースを使用すると、すべてのデータを1つの大きなストレージにまとめるのではなく、データを複数の「テーブル」と呼ばれる個別のストレージに分割します。

たとえば、次の2種類の情報を保存したいとします。

  • 顧客─名前、住所、メールアドレスなど
  • 注文─購入商品、価格、注文者など

この2種類のデータを1つのファイルにまとめてしまうと、以下のような問題が生じます。

  • 異なるデータ:注文に対して収集する必要があるデータは、顧客のデータとは異なる
  • データの重複:各顧客および各注文の両方に顧客の名前があり、重複が生じるため処理が複雑になる
  • 乱雑なデータ:注文データと顧客のデータの関連付けが難しくなる

リレーショナルデータベースでは、この問題を回避するために顧客用と注文用のテーブルをそれぞれ生成します。

リレーショナル(関連付けられている)であるため、「山田太郎さんの注文をすべて表示する」といった複雑な検索も可能です。

キー」を使用すると、2つのテーブルのデータを連携して、異なるテーブルのデータを操作したり結合したりすることができます。キーは、数値のIDなど、完全に独自のものを使用します。

WordPressサイトのデータベースを見たことがある方は、WordPressがリレーショナルモデルを使用しており、すべてのデータが個別のテーブルに分割されているのはご存知のはず。

WordPressのテーブル数はデフォルトで12ですが、WordPressプラグインも独自のテーブルを生成します。以下のスクリーンショットでは、WordPressサイトのデータベースに44のテーブルがあります。

MySQLのテーブル例
MySQLのテーブル例

WordPressの投稿はwp_postsテーブル、ユーザー情報はwp_usersテーブルに保存されます。この2つのテーブルはキーで接続され、各投稿と作成したユーザーが関連付けられます。データベース上では、以下のように表示されます。

各投稿には一意の識別番号であるpost_authorが割り当てられており、これがキーになります。

wp_postsテーブル
wp_postsテーブル

特定の識別番号に該当するユーザーアカウントを確認するには、wp_usersテーブルのIDを確認します。

wp_usersテーブル
wp_usersテーブル

キー(ID番号)は、すべての情報を関連付ける役割を担います。これにより、データを別々のテーブルに保存することができます。

クライアントサーバーモデル

MySQLはリレーショナルデータベースであるだけでなく、「クライアントサーバーモデル」を採用しています。

サーバー」はデータが実際に存在される場所。サーバー上のデータにアクセスするには、リクエストが必要になります。ここ出番になるのが「クラウアント」です。

クライアントは、SQL(前述のプログラミング言語)を使用して、データベースサーバーにデータの要求を行います。

たとえば、誰かがサイトの投稿にアクセスすると、WordPressサイトが複数のSQLリクエストをデータベースサーバーに送信し、投稿をブラウザに配信するために必要になるすべてのデータを取得します。具体的には以下のようなことを行います。

  • wp_postsテーブルをクエリして、投稿のコンテンツを取得
  • wp_usersテーブルをクエリして、投稿者の情報を取得(キーを使用)

WordPressサイトによって送信されるデータベースへの要求を正確に確認するには、無料のQuery Monitorプラグインがお勧めです。WordPressサイト(クライアント)とデータベースサーバー間のやり取りを把握することができます。

Query Monitorに表示されるMySQLサーバーに送信されたSQLクエリ
Query Monitorに表示されるMySQLサーバーに送信されたSQLクエリ

有料ソリューションには、New Relicがあります。Kinstaのエンジニアが頻繁に使用しているツールで、サイトパフォーマンスの問題の原因となっている遅いMySQLクエリを特定し、トラブルシューティングを行うことができます。

New Relicで遅いデータベーステーブルを確認
New Relicで遅いデータベーステーブルを確認

WordPressサイトがデータベースサーバーにアクセスできないと、「データベース接続の確立エラー」が発生します。

KinstaはMariaDBを採用しています

Kinstaでは、データベースシステムにMariaDBを使用しています。上でご紹介したMySQLの特徴は、MariaDBにもすべて当てはまります。

MariaDBはMySQLのフォークで、MariaDBの主要開発者はMySQLの創設メンバーでもあります。MariaDBは、オープンソースのMySQLコードをベースに構築されています。

名前こそ異なりますが、MariaDBはMySQLと密接に関連しており、「ドロップイン」と呼ばれる置換機能が組み込まれています(MySQLからMariaDBにシームレスに切り替えられる)。

MySQLとの相互運用性だけでなく、MariaDBはパフォーマンスにも優れています。「WordPressサイトの最高のパフォーマンスを実現するアーキテクチャの提供」を目指すKinstaは、この点からMariaDBを採用しています。

まとめ

MySQLは、オープンソースのリレーショナルデータベース管理システムです。WordPressサイトの場合は、投稿、ユーザー情報、プラグイン情報などが保存されます。

データがが別々の「テーブル」に保存され、「キー」で関連付けられるのが、リレーショナル(関係付け)データベースの特徴です。

WordPressサイトでデータベース内の情報が必要になると、SQLを使用してMySQLデータベースサーバーにリクエストを送信します(クライアントサーバーモデル)。

Kinstaでは、MySQLではなくMariaDBを使用しています。MariaDBはMySQLの共同創設者によって開発されたMySQLのフォークであり、今回ご紹介したMySQLの特徴はすべてMariaDBにも共通します。加えて、MariaDBには、ドロップイン置換による相互運用性と優れたパフォーマンスという利点があります。

Kinstaのお客様は、データベースへの直接アクセス、およびphpMyAdminなどのデータベース管理ツールをご利用いただけます。