SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

最新イベントはこちら!

Data Tech 2024

2024年11月21日(木)オンライン開催

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

EnterpriseZine(エンタープライズジン)

EnterpriseZine編集部が最旬ITトピックの深層に迫る。ここでしか読めない、エンタープライズITの最新トピックをお届けします。

『EnterpriseZine Press』

2024年秋号(EnterpriseZine Press 2024 Autumn)特集「生成AI時代に考える“真のDX人材育成”──『スキル策定』『実践』2つの観点で紐解く」

MySQL事始

MySQL事始 ストレージエンジン(2) InnoDBストレージエンジン

第11回

今回はMySQLのストレージの中でも、最も利用されているInnoDBについて解説します。トランザクションに対応したInnoDBはMySQL 5.5からデフォルトのストレージエンジンとなりました。

MySQL 5.5以降でのデフォルトのストレージエンジン

 以前はトランザクションをサポートしないMyISAMがデフォルトのストレージエンジンでしたが、2010年12月にリリースされたMySQL 5.5以降はInnoDBがデフォルトとなりました。InnoDBのデータサイズの上限は64TBです。InnoDBの主な機能は以下の通りです。

  •  トランザクション対応
  •  クラッシュリカバリ
  •  データとインデックスを表領域に格納
  •  外部キーのサポート

InnoDBのトランザクション管理

 InnoDBはACID準拠のトランザクションに対応したストレージエンジンです。トランザクションの独立性に関する分離レベルは、4種類全て実装しています。

トランザクションのACID特性
A Atomicity 原始性 処理が全て成功するか全て失敗するかのどちらか
C Consistency 一貫性 あらかじめ設定された整合性を保つ
I Isolation 独立性 他の処理に影響を与えない
D Durability 耐久性 完了した処理は永続的に保持される

 InnoDBはMVCC (Multi Version Concurrency Control)でトランザクションを実装しています。トランザクション開始時にディスク上のデータをメモリ上の「バッファプール」にコピーし、以降の操作をメモリ上で行います。別のトランザクションは別のバージョンのコピーを作るためMVCCと呼ばれます。

InnoDBのログ

 InnoDBはトランザクションをログに記録します。コミットされるまでの実行中のトランザクションはメモリ上にキャッシュされます。コミットが実行されるとディスク上のログファイルに書き出されます。コミット時に発生するディスクへの書き込みはログのみで、データそのものはチェックポイントと呼ばれるタイミングで別途書き出されます。

クラッシュリカバリ

 サーバが障害などで停止してしまった場合、データファイルとログファイルが正常な場合には、MySQLサーバの再起動時にクラッシュリカバリの処理が実行されます。このクラッシュリカバリではログファイルとデータファイルの比較を行い、コミットが完了しているのにデータに反映されていないトランザクションが存在する場合には、自動的にトランザクション内容をデータに反映していきます。

InnoDBの表領域

 InnoDBはデータを表領域に格納します。表領域は論理的な領域で、実際のデータは表領域ファイルなどに格納されます。デフォルトの設定では、複数のテーブルのデータとインデックスを1つのファイルに格納します。このファイルは、あらかじめ容量を設定しておくことや、容量を自動拡張するautoextendオプションを設定することができます。また複数ファイルにすることもできますが、autoextendオプションが使えるのはリストの最後に書かれたファイルのみです。

 例:1GBのibdata1とibdata2を表領域ファイルとし、容量の自動拡張を有効にした設定
innodb-data-file-path= ibdata1:1G;ibdata2:1G:autoextend

 innodb-file-per-tableオプションを使うと、テーブルごとにデータとインデックスを格納する表領域ファイルを作成します。また他のRDBMSと同様に、ファイルシステムを使わないrawデバイスを表領域に設定することも可能です。但しrawデバイスの利用はMySQLの運用ではあまり一般的ではありません。

次のページ
外部キーのサポート

この記事は参考になりましたか?

  • Facebook
  • X
  • Pocket
  • note
MySQL事始連載記事一覧

もっと読む

この記事の著者

梶山隆輔(カジヤマリュウスケ)

日本オラクル MySQL Global Business Unit Asia Pacific & Japan担当 MySQLソリューション・エンジニアリング・ディレクターオラクル社において、MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコンサルタントチームのアジア太平洋地域リーダー。多国籍なM...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/3774 2012/02/22 00:00

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング