LoginSignup
13
12

More than 5 years have passed since last update.

基礎MySQL ~その3~ アーキテクチャ

Last updated at Posted at 2016-03-03

アーキテクチャ

アーキテクチャ概要図
mysql_arc.jpg
参考:Storage Engine Architecture

SQLクエリ実行時の流れ

順番 名称 役割
1 Connectors クライアントから接続、SQLクエリの発行
2 Connection Pool 接続の受け付け
3 SQL Interface SQLクエリの受け付け
4 Parser SQLクエリの構文解析
5 Optimaizer SQLクエリの実行計画の作成(どのIndexを使うか、JOINをどう行うかなど)
6 Pluggable Storage Engine ストレージエンジンでメモリ、ファイルからデータ取得、更新
ストレージエンジンは複数あり変更が可能
7 File System OSファイルシステムでファイルから読み取り、保存

ストレージエンジン

MySQLの特徴の一つ
複数のストレージエンジンをテーブル毎に切り替えて使用することもできる。
MySQL5.5以降InnoDBがデフォルトのストレージエンジン
MySQL ストレージエンジンアーキテクチャーの概要

ストレージエンジンでやっていること

  • テーブル定義と物理ファイルの関連付け
    テーブル、インデックスをどのようなファイル構成、ファイルフォーマットで持つか
  • 独自のインデックス実装
    ex)日本語全文検索
  • 独自のキャッシュ機能
    ex)innodb_buffer_pool_size(InnoDBのデータキャッシュ)
  • トランザクション機能
  • 外部キー機能

など

InnoDBはトランザクション機能など他のDBと似た機能を持つ。
MyISAMではトランザクション機能がない。
BLACKHOLEでは実際にデータを書きこまない。
など、それぞれストレージエンジンの特徴があり、
アプリケーション要件に合わせテーブル毎に変更が可能。

MySQLインストール時に使用可能なストレージエンジンは以下

query
mysql> SHOW ENGINES;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

代替ストレージエンジン

その他ストレージエンジン

MySQL公式以外にもストレージエンジンがリリースされている。

mroonga 日本語全文検索
Spider シャーディング

mroongaやSpiderはMariaDBにバンドルされてたりするので、
使いたい場合はMariaDBを使ってもよいのかも
MariaDB ストレージエンジン
MariaDBはMySQLのfork?のDBでほぼMySQLと同じように使えます。

ストレージエンジンの設定

テーブル作成時に明示的に指定

query
CREATE TABLE test_table (id int) ENGINE = InnoDB;

ストレージエンジンの変更

query
ALTER TABLE test_table ENGINE = MyISAM;

ストレージエンジンの確認

query
SHOW CREATE TABLE test_table;
query
SHOW TABLE STATUS LIKE 'test_table';
query
SELECT TABLE_SCHEMA, TABLE_NAME, ENGINE 
FROM information_schema.tables
WHERE TABLE_NAME = 'test_table';

参考

MySQL事始 ストレージエンジン(1) アーキテクチャ概要

13
12
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
13
12