ダンプは1つのトランザクションにあるため、データベース内のすべてのテーブルの一貫したビューを取得できます。これはおそらく反例によって最もよく説明されます。 Orders
という2つのテーブルを持つデータベースをダンプするとします。 およびOrderLines
- 1回のトランザクションなしでダンプを開始します。
- 別のプロセスが
Orders
に行を挿入します テーブル。 - 別のプロセスが
OrderLines
に行を挿入します テーブル。 - ダンプは
OrderLines
を処理します テーブル。 - 別のプロセスで
Orders
が削除されます およびOrderLines
記録。 - ダンプは
Orders
を処理します テーブル。
この例では、ダンプにOrderLines
の行が含まれます。 、ただしOrders
。 Orders
の間に外部キーがある場合、データは一貫性のない状態になり、復元に失敗します。 およびOrderLines
。
単一のトランザクションでそれを行った場合、トランザクションの開始後に両方が挿入されて削除されるため、ダンプには順序も行もありません(ただし、一貫性があります)。