目次
とある日
上記の記事見て、やっぱり詳しくなるためにはドキュメント読むかということで、前から気になってた部分のInnoDBについて見た内容を記録してきます。
(ちなみに、一章から読もうとしてMySQL 8.0の機能の多さに諦めました)
ちなみに、以下のインタビューも勉強になりました。
yoku0825さんがMySQLスペシャリストになるまでにやってきた勉強法を、私たちにすべて教えてください! - Findy Engineer Lab - ファインディエンジニアラボ
今日読んだもの
- MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.2 InnoDB および ACID モデル
- MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.3 InnoDB マルチバージョン
- MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.4 InnoDB のアーキテクチャ
今までの記録
- 今日は、MySQLのリファレンス「第 15 章 InnoDB ストレージエンジン」を読むの日(その1)。 - 今日はなにの日。
- 今日は、MySQLのリファレンス「第 15 章 InnoDB ストレージエンジン」を読むの日(その2)。 - 今日はなにの日。
読んでみたメモ
MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.2 InnoDB および ACID モデル
- ACID モデル
- トランザクションと切っても切り離せない話
- 機能と紐づけされててわかりやすい
- *A*: 原子性
- 自動コミット設定
- *C*: 一貫性
InnoDB
二重書き込みバッファー
- *I:*: 分離性
- 自動コミット設定
- *D*: 持続性
MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.3 InnoDB マルチバージョン
InnoDB
はマルチバージョンストレージエンジン- MVCC「「マルチバージョン同時実行性制御」」の頭字語
- 変更された行の古いバージョンに関する情報が保持される
- *並列性*が高くなるのではやくなる方法
- ロールバックセグメント*undo ログ*を含む記憶域
- Oracleでよく聞いた話
InnoDB
は内部的に、データベース内に格納された各行に 3 つのフィールドを追加する- DB_TRX_ID
- DB_ROLL_PTR
- DB_ROW_ID
- トランザクションを定期的にコミットしないと更新 Undo ログからデータを破棄できないから、ロールバックセグメントが大きくなり過ぎてテーブルスペースがいっぱいになることがある
- SQL ステートメントで行を削除しても、その行はすぐにデータベースから物理的に削除されない
- 削除用に書き込まれた更新 Undo ログレコードが破棄されたときにのみ、対応する行およびそのインデックスレコードを物理的に削除する
MySQL :: MySQL 8.0 リファレンスマニュアル :: 15.4 InnoDB のアーキテクチャ