web-dev-qa-db-ja.com

複数の.mdfファイルを含むデータベース

オンラインで検索しましたが、探しているものが見つかりません。

問題/クエリは私の知る限り、SQL Serverのデータベースには1つの.mdfファイルと、おそらくいくつかの.ndfファイルと1つの.logファイルが必要です。

1つのmdfファイルと複数のndfファイルを持つ多くのデータベースを見てきました。しかし最近、すべてのデータベースに複数のmdfファイルが存在するサーバー上のデータベースに遭遇しました。

一部のデータベースのバックアップを取り、それらを別のサーバーに移動して、プライマリファイルを.mdfとして復元し、他のすべてのファイルを.logとして復元したログファイルを除いて、明らかに.ndfとして復元しました。

今私の質問は:

  1. データベースに複数の.mdfファイルを作成することには、何か賢明なことはありますか?
  2. 複数の.mdfファイルがあることの欠点はありますか?

そうだった SQL Server 2008 R2 64bit Enterprise Edition

正しい方向へのアドバイスやポインタは大歓迎です。ありがとうございました。

10
M.Ali

しかし最近、すべてのデータベースに複数のmdfファイルが存在するサーバー上のデータベースに遭遇しました。

これは、命名規則が正しくないためです。 Microsoftは、すべてのデータベースに1つのプライマリデータファイルがあると言っていますが、「mdfデータファイル」が1つしかないという意味ではなく、データベースには.mdf拡張子ですが、1つだけがプライマリデータファイルになります。プライマリデータファイルにmdf拡張子を付け、セカンダリデータファイルにndf拡張子を付けることをお勧めしますが、これはプライマリデータファイルに.abc拡張子を付けることもできます。あなたが目撃したものは正常です。実際には、好きな拡張子を付けることができます。

データベースに複数の.mdfファイルを作成することには、何か賢明なことはありますか?

つまり:

データベースに複数のprimaryファイルを作成することについて、何か知恵はありますか?

答えは「いいえ」です。データベースには1つのプライマリデータファイルしか含めることができません。

しかし、あなたが意味するならば:

データベースに複数のdataファイル(.mdf、.ndf、または別の名前が付けられている)を使用することに、何か知恵はありますか?

それは、複数のデータファイルを使用して利用できる場合とできない場合があります。それらが異なる物理ドライブに分散している場合(私はスピンドルについて話している)、書き込み集中型のアプリケーションにはいくつかの利点があります。それらがすべて同じ論理パーティション上にある場合、基盤となるのは共通のリソースを使用するため、何の利点もありません。ファイルおよびファイルグループを使用すると、データベースを複数のディスク、複数のディスクコントローラー、またはRAID(独立したディスクの冗長アレイ)システムにわたって作成できるため、データベースのパフォーマンスが向上します。たとえば、コンピュータに4つのディスクがある場合、3つのデータファイルと1つのログファイルで構成され、各ディスクに1つのファイルがあるデータベースを作成できます。データがアクセスされると、4つの読み取り/書き込みヘッドが同時にデータにアクセスできます。

このMSDN BOLの記事に従って

ファイルグループは、各ファイルグループ内のすべてのファイルにわたって比例的な塗りつぶし戦略を使用します。データがファイルグループに書き込まれると、SQL Serverデータベースエンジンは、すべてのデータをいっぱいになるまで最初のファイルに書き込むのではなく、ファイルの空き領域に比例する量をファイルグループ内の各ファイルに書き込みます。次に、次のファイルに書き込みます。たとえば、ファイルf1に100 MBの空きがあり、ファイルf2に200 MBの空きがある場合、1つのエクステントがファイルf1から割り当てられ、2つのエクステントがファイルf2から割り当てられます。このようにして、両方のファイルがほぼ同時にいっぱいになり、単純なストライピングが実現されます。

私が知っている他の利点は、1 TBデータベースが1つあり、他のサーバーでこのデータベースを復元したい場合、1 TBの空き容量。同じサイズの250 GBの異なるファイルに同じデータベースを分散すると、復元が容易になります。これは実際のシナリオではないかもしれませんが、見つけるのは非常に簡単です。 1台よりも4台の250 Gドライブを搭載したサーバー1 TBドライブ

多くのデータファイルの代わりに、異なるファイルグループを用意することをお勧めしますが、ここでも多くの環境はありません。複数のファイルグループで構成されるデータベースは、段階的な復元と呼ばれるプロセスによって段階的に復元できます。断片的な復元は、すべての復旧モデルで機能しますが、完全モードおよび一括ログモデルでは、シンプルモードよりも柔軟性があります。データベース内のファイルまたは ファイルグループをバックアップ して、個別に復元できます。これにより、データベースの残りの部分を復元しなくても、破損したファイルのみを復元できます。ファイルグループバックアップ内のファイルは、個別またはグループとして復元できます。

14
Shanky