📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == ストレージエンジンとは、RDBMSにおいてデータやトランザクションの管理を行う機能のことである。<br> MySQLでは、テーブルごとにストレージエンジンを指定することができる。<br> <br> * データフォーマットの定義 * データ永続化 * インデックス管理 * トランザクション管理 * ロックおよび排他的制御 <br> <center> {| class="wikitable" | style="background…」 |
|||
| 69行目: | 69行目: | ||
ALTER TABLE sample_table ENGINE = 'MEMORY'; | ALTER TABLE sample_table ENGINE = 'MEMORY'; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | |||
== InnoDB == | |||
==== InnoDBのデータファイル ==== | |||
システム変数<code>innodb_file_per_table</code>により、テーブルごとにデータファイルを作成するかどうかを設定することができる。<br> | |||
テーブルごとにファイルを作成することにより、テーブルの<code>DROP</code>文、<code>TRUNCATE</code>文等の実行時において、ディスク使用量を減らすことができる。<br> | |||
<syntaxhighlight lang="mysql"> | |||
SHOW VARIABLES LIKE 'innodb_file_per_table'; | |||
</syntaxhighlight> | |||
<br> | |||
システム変数<code>innodb_file_per_table</code>が<code>ON</code>の場合、データディレクトリ配下にテーブルごとの***.indファイルが作成される。<br> | |||
なお、デフォルトのデータディレクトリは/var/lib/mysql/mysqlディレクトリである。<br> | |||
<br> | |||
==== InnoDBのトランザクションログ ==== | |||
データの更新は、以下に示すような流れで処理される。<br> | |||
# トランザクションの実行直後に、InnoDBログバッファ (メモリ上の領域) に書き込む。 | |||
# コミット時に、InnoDBログファイル(WAL : Write Ahead Log)、および、バッファプール (メモリ上のキャッシュ) にログバッファの内容を書き込む。 | |||
# 任意のタイミングでバッファプールの内容をデータファイルへ反映する。 | |||
<br> | |||
バッファプールの内容をデータファイルに反映する前にデータが消えた場合等に、InnoDBログファイルがリカバリに利用される。<br> | |||
<br> | |||
==== ログファイルの設定 ==== | |||
<syntaxhighlight lang="mysql"> | |||
SHOW VARIABLES LIKE 'innodb_log%'; | |||
</syntaxhighlight> | |||
<br> | |||
* innodb_log_buffer_size | |||
*: ログファイルの書き込み時において、InnoDBで使用されるバッファのサイズ。 | |||
* innodb_log_checksums | |||
*: <br> | |||
* innodb_log_compressed_pages | |||
*: <br> | |||
* innodb_log_file_size | |||
*: ログファイルのサイズ。 | |||
* innodb_log_files_in_group | |||
*: ログファイルの数。 | |||
* innodb_log_group_home_dir | |||
*: ログファイルのディレクトリパス。 | |||
* innodb_log_write_ahead_size | |||
*: Read on Write問題に関するオプション | |||
<br> | |||
ディスクのブロックサイズよりも小さなデータをログファイルの途中に書き込む時、<br> | |||
対象ブロックの読み取り後に書き戻すという非効率な処理を避けるため、ブロックサイズ分のみデータを補完して書き込みのみ行われるようにした。<br> | |||
<br> | |||
==== バッファプールの設定 ==== | |||
<syntaxhighlight lang="mysql"> | |||
SHOW VARIABLES LIKE 'innodb_buffer%'; | |||
</syntaxhighlight> | |||
<br> | |||
* innodb_buffer_pool_chunk_size | |||
*: <br> | |||
* innodb_buffer_pool_dump_at_shutdown | |||
*: MySQLのシャットダウン時にバッファプールにキャッシュされるページを記録するかどうか。 | |||
* innodb_buffer_pool_dump_now | |||
*: <br> | |||
* innodb_buffer_pool_dump_pct | |||
*: <br> | |||
* innodb_buffer_pool_filename | |||
*: バッファプールのキャッシュを記録する場合のファイル名。 | |||
* innodb_buffer_pool_instances | |||
*: <br> | |||
* innodb_buffer_pool_load_abort | |||
*: <br> | |||
* innodb_buffer_pool_load_at_startup | |||
*: 記録したバッファプールの内容をロードするかどうか。 | |||
* innodb_buffer_pool_load_now | |||
*: <br> | |||
* innodb_buffer_pool_size | |||
*: バッファプールのサイズ | |||
<br><br> | <br><br> | ||