2
2

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.

DBのストレージエンジンとは?

Last updated at Posted at 2021-11-13

勉強前イメージ

ストレージエンジン?
わからん・・・

調査

ストレージエンジンとは?

DBでのエンジンのことで、DBに対してデータをinsertしたりselectしたりするプログラムの部分で、
いくつかの構成要素によって成り立っています。
SQLを受け取って結果を返す → エンジン部分
データベースエンジンを結びつける → クライアントモジュール 等
様々なツールから成り立っており、DBのメインの部分になります。

動作について

クライアントからのSQLを受け取ると以下が走ります

  1. SQLの解釈 → パース
  2. どのようにしてデータを処理するか → プランナやオプティマイザ
  3. 実データへのアクセス → ストレージエンジンの部分

特に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文は一緒でもどうやってデータを取ってくるのかの箇所を指定できるってことかな。

参考

2
2
2

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?