(O+P)ut

OutPut Log by SE in SIer



(O+P)ut

Output Log by SE

【入門】物理ログと論理ログの違い

スポンサーリンク

ざっくりいうと

データベース用語である物理ログと論理ログの違いは以下のように記載できます。

物理ログ

変更対象のデータ領域のイメージ
大きい

論理ログ

SQL文などによる変更の手順を記したログ
小さい


以下、バックグラウンドとおまけです。

これらのログが必要な背景

データベースは更新が発生した際に、高速なメモリで処理を行いディスクへの書き込みを後回しにしています。
これは応答速度を優先するための施策で、実際ディスクとメモリとではアクセス速度は数十倍違います。

一方、インスタンスが異常終了したりサーバに筐体障害が起きた場合、
確定したトランザクションのデータとディスクにいるデータファイルに矛盾が生じる場合があります。

そんな時に活躍するのがこれらのログです。変更が確定されていたデータは反映し、未確定であったデータは取り消します。

論理ログ(補足)

OracleDBでは、REDOログがそれに近いです。発行されたSQL
メモリでデータベースを更新し、REDOログに書き込み完了して初めてデータ更新が完了したことになります。*1
主にバックアップデータを最新のデータまで戻すために使われます。

物理ログ(補足)

データベースに更新が発生した場合に、その更新前のデータと更新後のデータをディスクに保持します。
OracleDBではぴったりくるものがありませんが、更新前データという観点ではUNDOデータがそれにあたります。
UNDOデータは主に変更したデータを元に戻すために使われます。


これらの用語が登場した際は、
命令だけをログにした軽いログを論理ログ、
変更するデータの前後をログにした重いログを物理ログ、

とイメージすると話についていけると思います。

以上、ご参考ください。

*1:高速化を優先してredoログの書き込みを待たずに更新完了とするケースもあります


他の記事を読む