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

SQLServerデータベーススナップショット-1

    こんにちは

    この記事では、SQLServerのデータベーススナップショットについて説明します。データベーススナップショットはSQLServer2005に付属する機能であり、2008、2012、2014、2016、SQLServer2017などで継続的な機能です。データベーススナップショット;最も単純な定義は、任意の時点でのデータベースの読み取り専用コピーまたはデータベースのスナップショットです。

    スナップショットプロセスが実行されると、SQL Serverは選択されたデータベースの現在のイメージを取得しますが、スナップショットデータベースのディスクに現在の物理データはありません。

    固有の物理データがあり、本番データベース専用です。スナップショットの作成中にトランザクションのロールバックをコミット解除します。スナップショットデータベースに加えられた変更はすべて、スパースファイルに書き込まれます。 スナップショットデータベース用。

    つまり、Snapshotの同じデータに関連するselectをクエリしたときに、Snapshotデータベースのデータを変更した場合、SQL Serverは変更されたデータをスパースファイルから読み取り、変更されていないデータを元のデータベースから読み取ります。

    このシナリオを要約した最も美しい肖像画は、MSDNによって公開された次の画像です。

    上の図に示すように、最初のケースでは、本番データベースの10ページのうち3ページが更新されています。これらの更新は、最初のケースに示されているように、スパースファイルにも書き込まれます。 2番目のケースでは、ソースデータベースの8ページが更新され、7ページがスパースファイルに書き込まれます。

    スナップショットからレポートまたはクエリを実行すると、SQLServerは変更されていないページをSQLServerソースデータベースから読み取り、SQLServerは変更されたページをスパースファイルから読み取ります。

    スナップショットの主な目的は、データベースのバックアップを作成し、スナップショットを介してレポートを作成することにより、開発者向けの安定したレポートまたはテストデータベースを一定の間隔で作成することです。本番データベースで軽微なエラーが発生した場合、管理者はスナップショットから元の状態に戻ることができます。

    ただし、Snapshotデータベースをソースデータベースに1対1で接続することは非常に重要です。削除または移行すると、Snapshotデータベースからメインデータベースを返すことができなくなります。そのため、スナップショットデータベースはSQLServerのバックアップ戦略ではありません。テストデータベースに使用できます。

    次の投稿では、SQLServerデータベースのスナップショットについて引き続き説明します。


    1. Android Roomを使用して2つ以上の外部キーを持つテーブルを作成するにはどうすればよいですか?

    2. Pythonを使用してOracleデータベースにバッチ挿入するにはどうすればよいですか?

    3. テーブルの列名をどのように返しますか?

    4. MySQLDumper:PHPおよびPerlベースのMySQLデータベースバックアップツール