Help us understand the problem. What is going on with this article?

MySQL についてまとめた

MySQL とは

世界でもっとも利用されている データベース管理システム(DBMS : DataBase Manegement System)

  • オープンソースソフトウェア(OSS : Open Source Software) のため基本的に無料
  • 拡張性と柔軟性が高い
    • 小さなアプリケーションから巨大なアプリケーションまですべてに対応可能
    • Mac, Windows, Linuxなど複数のOSで利用可能
  • ストレージエンジン をテーブルごとに選択できる

MySQL 実行の流れ

クライアントからSQL文が投げられた場合、MySQLではおおまかに以下のような流れで処理されます。

SQL実行の流れ2.png

オプティマイザ とは

  • SQL文を最適化してくれる、MySQLの 脳 のようなもの
  • 各テーブルのレコード数、列数と列のサイズやインデックス情報などの 統計情報 を元にどのようにテーブルにアクセスするか(フルスキャンするのか、インデックスをつかうのか、など)がかかれた 実行計画 を作成する

※ 実際のDBの情報 = 統計情報 ではないため、DBの情報が更新されたら統計情報も更新が必要
(更新しないと古い情報をもとに実行計画がつくられてしまい、SQLのパフォーマンスが落ちる)

ストレージエンジン とは

  • 実際にデータベースにデータの読み書きを行っている
  • 様々な種類があり、テーブルごとに選択できる
  • デフォルトでは MySQL5.6までは MyISAM, MySQL5.7以降は InnoDB が選択されている(デフォルトストレージエンジン を設定することもできる)
  • テーブルを作成するときに選択する
CREATE TABLE sample_table(id int) ENGINE = InnoDB;

MyIsam と InnoDB

MyIsam 特徴

  • メリット
    • 参照系処理が高速
  • デメリット
    • トランザクションが使えないので、リカバリが面倒
    • テーブルロックをかけるので、複数のクライアントからの同時更新でロックが発生する

InnoDB 特徴

  • メリット
    • トランザクションが使えるので、リカバリが楽。
    • 行ロックを行うので更新/参照の競合が限定的になる。
  • デメリット
    • 参照処理がMyISAMに比べて遅い。
    • データサイズがMyISAMに比べて大きくなるのでその分ディスク容量が必要。

MyISAM や InnoDB のほかにも以下のような種類がある

ストレージエンジン 特徴             
MyISAM        データファイルとインデックスファイルの2ファイルで保存される。トランザクション、行レベルのロックをサポートしていない。
InnoDB        トランザクション、行レベルに対応したエンジン。MyISAMよりは速度が劣る。
Memory        メモリにデータを格納するエンジン。再起動などで、データが失われる。
Merge        複数のMyISAMを統合したエンジン。
Federated      ローカルにデータを保存せず、リモートを参照するエンジン。

おまけ

MySQLの処理を料理にたとえてみました!

MySQLの流れ(料理).png

参考

実行計画??統計情報??って人へ
MySQLの「InnoDB」と「MyISAM」についての易しめな違い

わたくしごと

DBA目指して勉強中...

  1. MySQL について  ◀ これ
  2. MySQL のインストール
  3. my.cnf について   
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした