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

上記は、「MySQLとはなんですか?」という質問に対する1文の短い回答ですが、もう少し分かりやすく説明させてください。

データベースは、データを簡単に使用したり取得したりできるように、そのデータをまとめて構造化したものです。WordPressサイトの場合、「データ」とは、ブログ投稿の内容、サイトに登録されているユーザーの情報、自動読み込みデータ、重要な設定・構成などです。

MySQLは、そのデータを保存したり管理したりする人気のあるシステムの一つにすぎませんが、WordPressサイトで特に人気のあるデータベースソリューションです。

参照文献:WordPressの「MySQL Server Has Gone Away」エラーの処理方法MySQL 1064エラーを修正する方法

では、もう少し詳しく見ていきましょう。

MySQLとは?(詳細説明)

MySQLはもともと1995年に発売されました。それ以来、所有者も管理者も数回変更しましたが、2010年に所有権がOracle社に移りました。現在Oracle社がMySQを管理していますが、それでもオープンソースソフトウェアです。つまり、自由に使用したり変更したりできます。

MySQLのロゴ
MySQLのロゴ(画像ソース:MySQL/Oracle

その名前は、共同設立者の娘の名前である「My」と、リレーショナルデータベースのデータにアクセスして管理できるStructured Query Languageの略称である「SQL」を組み合わせたものです。

MySQLの動作を理解するには、下記の2つの関連するものも理解することが重要です。

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

データベースへのデータの保存方法はさまざまなです。

MySQLは、リレーショナルデータベースと呼ばれるアプローチを使用しています。

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

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

  • 顧客:名前、住所、詳細情報など
  • 注文:購入した製品、価格、注文者など

上記のすべてのデータを1つの大きなファイルなどにまとめようとすると、次のような問題が発生します。

  • 異なるデータ:ある注文に対して収集する必要があるデータは、顧客のデータとは異なります。
  • データの重複:各顧客には名前があり、各注文には顧客の名前があります。そこで、データが重複していて、処理は難しくなります。
  • 整理されていないデータ:注文のデータと顧客のデータの関連付けは難しいです。

上記の問題を解決するには、リレーショナルデータベースでは、顧客用のテーブルと、注文用のテーブルが別途作成されます。

一方、「山田太郎さんのすべての注文を表示する」こともできます。リレーショナル(関係付けの)データベースですから。

キー」と呼ばれるものを使用すると、2つのテーブルのデータを連携して、必要に応じて異なるテーブルのデータを操作したり結合したりできるようになります。キーはお客様の名前ではないことに注意してください。代わりに、数値のID番号など、100%ユニークなものを使用します。

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

デフォルトでは、WordPressは12個のテーブルを使用しますが、多くのWordPressプラグインも独自のテーブルを追加します。たとえば、下の例のWordPressサイトのデータベースには44個のテーブルがあります。

MySQLのさまざまなテーブルの一例
MySQLのさまざまなテーブルの一例

リレーショナルデータベースの説明の最後になりますが、WordPressに固有の内容についてもご案内します。

WordPressはブログの投稿をwp_postsテーブルに保存し、ユーザー情報をwp_usersテーブルに保存します。ただし、2つのテーブルはキーで接続されているため、各ユーザーアカウントを、各ユーザーが作成したすべてのブログ投稿への関連付けが可能になります。

上記の機能はデータベースを見ると、次のようになります。

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

wp_postsテーブル
wp_postsテーブル

次に、その番号に該当するユーザーアカウントを知りたい場合は、wp_usersテーブルのIDを確認します。

wp_usersテーブル
wp_usersテーブル

キー(ID番号)は、すべての情報を結び付けるものです。キーがあるため、データが別々のテーブルに保存されていても、その関連付けがあります。

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

MySQLはリレーショナルデータベースシステムであるだけでなく、クライアントサーバーモデルと呼ばれるものも採用します。

サーバーは、データが実際に存在される場所です。ただし、このデータにアクセスするには、リクエストする必要があります。それがクライアントの出番です。

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

たとえば、誰かがサイトのブログ投稿にアクセスした場合、WordPressサイトは複数のSQLリクエストをデータベースサーバーに送信し、ブログ投稿をその訪問者のWebブラウザーに配信するために必要なすべての情報を取得します。次を実施します。

  • wp_postsテーブルをクエリして、ブログ投稿のコンテンツを取得します。
  • wp_usersテーブルをクエリして、作成者ボックスの情報を取得します(前述のキーを使用)。
  • 云々

WordPressサイトによって行われているデータベース要求の種類を正確に確認したい場合は、Query Monitorという素晴らしくて無料のプラグインを使用して、WordPressサイト(クライアント)とデータベースサーバー間のやり取りを把握できます。

Query Monitorプラグインは、MySQLサーバーに送信されたSQLクエリを表示する
Query Monitorプラグインは、MySQLサーバーに送信されたSQLクエリを表示する

もう1つのプレミアムソリューションはNew Relicです。当社のエンジニアはこのツールを頻繁に使用して、遅いMySQLクエリが原因であるWordPressサイトのパフォーマンス課題のトラブルシューティングを行います。

New Relicのデータベース画面には、遅いデータベーステーブルが表示されます。

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

KinstaはMySQLではなくMariaDBを使用しています。違いは何でしょうか?

ここKinstaでは、MySQLではなく、MariaDBと呼ばれるデータベースシステムを使用しております。ただし、MySQLで見たすべての特徴がMariaDBにも適用されます。

実は、MariaDBはMySQLのフォークであり、MariaDBの主要開発者はMySQLの当初の設立者の1人です。 「フォーク」とは、MariaDB開発者が元のオープンソースのMySQLコードをベースにしてMariaDBを作成したことを意味します。

したがって、MariaDBは名前が異なりますが、MySQLと密接に関連しており、完全な「ドロップイン」置換機能を提供します。(つまり、予防策を講じる必要なく、MySQLからMariaDBにシームレスに切り替えることができます。)

一方、MariaDBはMySQLとの相互運用性を提供しますが、パフォーマンスも改善します。これは、「WordPressサイトを強化するために最高のパフォーマンスを目指すアーキテクチャを提供する」という私たちの企業哲学と一致します。

Kinsta uses MariaDB, a fork of MySQL, to ensure the best performance for your WordPress site.🚀 クリックでつぶやく

(要約) MySQLとは?

MySQLはオープンソースのリレーショナルデータベース管理システムです。WordPressサイトの場合は、ブログの投稿、ユーザー、プラグインの情報などをすべて保存するのに役立ちます。

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

WordPressサイトがその情報にアクセスする必要がある場合、SQLを使用してMySQLデータベースサーバーにリクエストを送信します。(これはクライアントサーバーモデルといいます。)

KinstaはMySQLではなくMariaDBを使用します。ただし、MariaDBはMySQLの共同設立者の1人によるMySQLのフォークであり、ドロップイン置換による相互運用性と、パフォーマンスの向上を提供しています。そのため、本記事で説明したコンセプトはすべてMariaDBにも適用されます。

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