0
0

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 5 years have passed since last update.

トランザクションストレージエンジンを調べてたらアバウトにmysqlを全部知ることになった話

Last updated at Posted at 2019-03-27

トランザクションストレージエンジンを調べていたら

これを理解するためには殆どMySQLの全容を必然的に知ることになる、そんな気がしました。
MySQLにデータを入れる、というのがよく聞く話だと思います。筆者も前までそんなイメージでした。しかし、データ管理のシーケンスは、そんな単純なものではありませんでした。

以下、MySQLのシーケンスです。

クライアントからのリクエスト
     ↓
コネクタ and コネクションプール
     ↓
 パーサ and キャッシュ
     ↓
  オプティマイザ
     ↓
  ストレージエンジン
     ↓
  ストレージファイル

結構後の方に知りたいストレージエンジンが出てくるんですね。

というわけで、上から1個1個潰していくことにします。

コネクタとコネクションプール

コネクタは、様々なプログラミング言語からアクセスするためのドライバ

コネクションプールとは、接続待機している状態のプロセス(コネクション)を一定数確保(プール)させているところ。ここでプールされているコネクションは、接続のリクエストが来たら順次使用できるようになっていて、接続する際の負荷を軽減させる仕組みです。ストックしているコネクションを上回るアクセスが来た場合、空きができるまで、クライアントのリクエストは待機状態になります。

パーサとキャッシュ

無事にコネクションプールから、コネクションを渡されたクライアントのデータは、パーサとキャッシュに来ます。
パーサとは、SQLクエリの解析を行います。mysqlのコマンドラインツールから打ち込んだクエリはここで解析されるんですね。

キャッシュとは、SQLクエリとその結果をストックしてくれます。

オプティマイザ

パーサで解析されたクエリを最適化します。

ストレージエンジン

ようやく本題です。
ストレージエンジの役割を先に書きますと、

  • データ変換
  • インデックス
  • メモリ利用
  • トランザクション
  • 同時実行性(排他制御)
  • ユニークファンクション(MyISAMの空間情報インデックスなど)

上記が主だった機能です。インデックスやトランザクション、排他制御といった中核を担う機能を持ってるんですね。

このエンジンには大別して2種類ある

トランザクションストレージエンジン

トランザクション機能をサポートしている
代表格かつ、mysqlのdefault-storage-engineがInnodb

非トランザクションストレージエンジン

トランザクション機能をサポートしていない
以前はmysqlのdefault-storage-engineだったMyISAM

ストレージエンジンソフトウェアは、他にもいっぱいある

Memory
Archive
NDBCLUSTER
CSV
Merge
Federated
Example
Blackhole

などなど・・・それぞれにユニークファンクションがある。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?