64
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySQL についてまとめた

Last updated at Posted at 2018-07-18

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 について   
64
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
46

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?