web-dev-qa-db-ja.com

データベースのバックアップ-差分ファイルサイズの質問

SQL Server 2005のバックアップ計画では、日曜日に完全に実行したいと思います。

BACKUP DATABASE myDatabase TO DISK = 'D:\Database Backups\myDatabase_full.bak' WITH FORMAT
GO

それから私は週の残りの部分を毎晩差動でやりたいです:

BACKUP DATABASE myDatabase  TO DISK = 'D:\Database Backups\myDatabase_Diff.bak' WITH DIFFERENTIAL
GO

私の仮定では、データベースにアクティビティがほとんどまたはまったくない場合、差分のサイズは増加しません(またはそれほど増加しません)。

ただし、上記の差分バックアップを(アクティビティがほとんどまたはまったくない状態で)実行すると、差分バックアップが一度にメガ単位で増加するのがわかります。なぜそのように増加しているのですか?

ありがとう

1
GernBlandston

何かがデータベースを変更しています!

インデックスの再構築やデフラグなどにより、ページが変更されます。ロールバックされた変更はページを変更した可能性があるため、それらもカウントされます。
さらに、差分バックアップは「ファジー」と見なされるため、一貫性を保つために必要なトランザクションログデータがバックアップに含まれます。

Paul Randalが 非常にクールなスクリプト しばらく前に書いたので、最後の完全バックアップ以降に変更されたエクステントの数がわかるので、これを使用して差分の大きさを計算できます。

さらに、このスクリプトを使用して、データベースで変更されたページを通知できるはずです。これは、変化するデータの謎を解くのに役立つ場合があります。

4
Nick Kavadias

差分は増分と同じではないことに注意してください。たとえば、100MBのデータベースがあり、5MBの変更を加えた場合、各差分バックアップは少なくとも5MBになります。インクリメンタルでは、100 MBのデータベースがあり、月曜日に5 MBの変更を行い、火曜日に変更を加えない場合、100 MBの完全バックアップ、月曜日の5 MBの増分バックアップ、火曜日の1MB未満の小さなバックアップがあります。

差分の場合、100 MBのデータベースがあり、今後4日間で5、1、3、および5 MBの変更を行うと、5、6、9、および14MBの差分バックアップが作成されます。

3
Chris K

あなたは完全に確信していますそのデータベースにはまったくアクティビティがないということですか?おそらく、プロファイラーを実行して、予期しないことが起こっているかどうかを確認したり、データを変更している可能性のあるメンテナンス計画やスケジュールされたタスクを確認したりできます。

そうは言っても...私には本当の答えがないことに気づきました。ある特定のデータベース(〜6GB)で私が行う毎日の差異は、データベースを使用するアプリケーションに理論的に誰もログインしていない場合でも、週末にかけて常に増加します。そのサーバーには、まれではありますが、オンデマンドでデータベースの読み取り/書き込みを行うサービスがあることを知っているので、わざわざ調べたことはありません。

1
aNullValue

差分バックアップは、「タッチ」された8Kページをバックアップします。

すべての変更が小さく、同じ領域にある場合は、小さなバックアップがあります。それはありそうもない。

同じページをダーティし続けると、差分バックアップが大きくならない可能性があります(これもありそうにありません)

ページを汚すいくつかの事柄:

  • 統計が更新されます(ページが割り当てられているシステムテーブルに保存されます)
  • インデックスが再構築されます(大量のデータがシャッフルされます)
  • データのページ分割(つまり、2つの小さな挿入に対して4つのダーティページ)
  • ...およびインデックス構造のページ分割
1
gbn

私は(基本的にJava開発者)私のライブデータベースが7.5 GBで、1日あたりの差分バックアップが1.5 GBであるという同じ問題に直面しています。(実際には1時間差分バックアップを取ります) randyのスクリプトを半日(つまり、完全な営業日の半分であるランチタイムに)実行したところ、次の出力が得られました。

合計変化率12565817169 13.66

これは古いアプリケーションであり、これを使用するpplはほとんどないと確信していますが、17169の変更されたエクステントを表示するには、次のようにします。17169* 64k => 1098.816 MB(ほぼ1GBの差分)。これについてあなたの考えを共有してください...どうすればこれをさらにデバッグできますか?つまり、エクステントをさらに下げて小さな差を得るにはどうすればよいのでしょうか。

0
fbit_user