×
科目A|データベース
コミット(COMMIT)は、データベースにおけるトランザクション制御言語(TCL)の代表的なコマンドであり、データの「不揮発的確定」を担います。コミットが実行されるまで、トランザクション内の更新データは「仮保存(一時的な状態)」であり、他の接続ユーザーからは通常見えません。これにより、未確定の不安定なデータを他人が読み込んでしまう不整合(ダーティリード)を防ぐことができます。コミット命令を受信した段階で、DBMSはすべての更新情報を確定させ、初めて他のユーザーにもその変更が公開されます。
コミット時の安全性を担保するために、多くのRDBでは以下の技術が用いられています。
・WAL(Write-Ahead Logging / ログ先行書き込み):実際のデータファイルをディスクに更新する前に、変更履歴である「トランザクションログ」をまずディスクに書き込みます。コミットコマンドが成功したとみなされるのは、このログ書き込みが完了した時点です。これにより、データ本体の書き込み途中でクラッシュしても、再起動時にログをたどって安全に復旧(ロールフォワード)できます。