sql >> データベース >  >> RDS >> Mysql

単一トランザクションのmysqldumpが、単一トランザクションのないmysqldumpよりも一貫しているのはなぜですか?

    ダンプは1つのトランザクションにあるため、データベース内のすべてのテーブルの一貫したビューを取得できます。これはおそらく反例によって最もよく説明されます。 Ordersという2つのテーブルを持つデータベースをダンプするとします。 およびOrderLines

    1. 1回のトランザクションなしでダンプを開始します。
    2. 別のプロセスがOrdersに行を挿入します テーブル。
    3. 別のプロセスがOrderLinesに行を挿入します テーブル。
    4. ダンプはOrderLinesを処理します テーブル。
    5. 別のプロセスでOrdersが削除されます およびOrderLines 記録。
    6. ダンプはOrdersを処理します テーブル。

    この例では、ダンプにOrderLinesの行が含まれます。 、ただしOrdersOrdersの間に外部キーがある場合、データは一貫性のない状態になり、復元に失敗します。 およびOrderLines

    単一のトランザクションでそれを行った場合、トランザクションの開始後に両方が挿入されて削除されるため、ダンプには順序も行もありません(ただし、一貫性があります)。



    1. OracleのLENGTH()関数

    2. Neo4jクエリ言語-Cypher

    3. SQL Server AlwaysOn可用性グループ:インストールと構成、パート1

    4. SQLクエリを高速化する方法は?インデックス?