勉強前イメージ
ストレージエンジン?
わからん・・・
調査
ストレージエンジンとは?
DBでのエンジンのことで、DBに対してデータをinsertしたりselectしたりするプログラムの部分で、
いくつかの構成要素によって成り立っています。
SQLを受け取って結果を返す → エンジン部分
データベースエンジンを結びつける → クライアントモジュール 等
様々なツールから成り立っており、DBのメインの部分になります。
動作について
クライアントからのSQLを受け取ると以下が走ります
- SQLの解釈 → パース
- どのようにしてデータを処理するか → プランナやオプティマイザ
- 実データへのアクセス → ストレージエンジンの部分
特に3番目がストレージエンジンの動作の部分で
実データへアクセスしてSQL文を返す役割をしています。
ストレージエンジンの種類
MySQLであれば以下のようなものが代表的です
- InnoDB : 行ロックとトランザクションのサポート
- Memory : メモリ上にテーブルを配置
- Merge : 複数のMyISAMテーブルを統合
試しにmysql8でストレージエンジンを確認してみたら以下のように出力されました。
InnoDBがデフォルトになっていました
mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| MyISAM | YES | MyISAM 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 |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
ストレージエンジンは指定できる
ストレージエンジンはテーブル単位で指定ができて、
create table時に ENGINE
を使用して、使用したいストレージエンジンを指定できます。
alter tableでストレージエンジンの変更もできます。
勉強後イメージ
実データへアクセスする際にどうやってアクセスするのか、みたいなのでストレージエンジンがあるらしい
例えば↑の他にもCSVっていうストレージエンジンがあるらしくて、それはデータにCSVを使用できるから。
SQL文は一緒でもどうやってデータを取ってくるのかの箇所を指定できるってことかな。