最高のパフォーマンスを実現する MS SQL レイアウト

最高のパフォーマンスを実現する MS SQL レイアウト

MS SQL バックエンドとして機能する新しいサーバーを購入しました。最適な設定方法を知りたいです。

サーバーはDell R710で、2x 74GB 15kと4x 146GB 15kの6つのハードドライブを搭載しています。

現在、RAID 1/Raid10 構成でセットアップされています。

私の質問は、次のものをどこに(どの配列に)配置すればよいかということです。

TEMPDB(数、サイズ、成長率も) システムDB(マスター、モデルなど) アプリケーションMDF アプリケーションLDF システムページファイル

RAID1にOSはすでにインストールされています。

答え1

OS、ページング ファイル、LDF を RAID1 アレイに配置します。その他すべてを RAID10 アレイに配置します。

Windows 2008 を使用していない場合は、パーティションが正しく配置されていることを確認してください。

http://msdn.microsoft.com/en-us/library/dd758814.aspx

すでに説明したように、CPU コアごとに 1 つの TEMPDB ファイルを追加し、すべて同じサイズにします。

ログ ファイルのサイズを適切に設定し、1 つの手順で作成します。

アレイが完全に故障し、データベースとバックアップが失われるリスクを軽減するために、可能であれば、ネットワーク共有を介してデータベースを別のサーバーにバックアップすることを検討してください。

答え2

一時DB

少し前にtempdbの最適化について調べて、自分で答えました。Stackoverflowに関する質問私が発見したことは次のとおりです。

tempdb のパフォーマンスを最適化するには、物理​​ディスク構成、ファイル構成、およびデータベース内のいくつかの設定に注意してください。

物理ディスク構成

tempdbは、専用の物理ディスクを所有するこれにより、SQL Server 上の残りのボリュームからの I/O トランザクションを分割できるようになります。

tempdbを新しいディスクドライブに移動するには、を使用しますALTER DATABASE。これは、この操作を実行するための重要なT-SQLコマンドです。Microsoftは、SQL Server 2005 Books Onlineで良い例を提供しています。記事名はALTER DATABASE (Transact-SQL)で、具体的なセクションは次のとおりです。「G. tempdb を新しい場所に移動します。」

tempdbは書き込み頻度の高いデータベースです。そのため、RAID 5アレイは適切な場所ではありません。tempdbはRAID 1またはRAID 10アレイのいずれかこれらは、書き込み頻度の高いアプリケーション向けに最適化されているためです。tempdb の各物理データベース ファイルに RAID 1 または RAID 10 アレイを追加できる場合は、パフォーマンスが向上します。

データベースファイル

あなたはサーバーのCPUコアごとに1つの物理ファイルしたがって、デュアルチップ、デュアルコアのサーバーを使用している場合は、tempdbデータベース用に4つの物理データベースファイルが必要です。データベースファイルを追加する場合は、同じ初期サイズと同じ成長設定こうすることで、SQL Server は可能な限り均等にファイル全体にデータを書き込みます。

データベースファイルサイズ

tempdbデータベースのサイズはシステムのパフォーマンスに影響を与える可能性があります。たとえば、tempdbに定義されているサイズが小さすぎると、システム処理負荷の一部がSQL Server のインスタンスを再起動するたびに、tempdb がワークロードをサポートするために必要なサイズに自動的に拡張されます。tempdb データとログ ファイルのサイズを増やすことで、このオーバーヘッドを回避できます。

運用環境でのtempdbの適切なサイズを決定するには、既存のワークロードや使用されているSQL Serverの機能など、多くの要因に依存します。Microsoftは、SQL Serverで次のタスクを実行して、既存のワークロードを分析することをお勧めします。テスト環境:

  1. tempdbの自動拡張をオンにする(テスト環境で!)
  2. 個々のクエリまたはワークロード トレース ファイルを実行し、tempdb スペースの使用状況を監視します。
  3. インデックスの再構築や tempdb 領域の監視などのインデックス メンテナンス操作を実行します。
  4. 前の手順のスペース使用値を使用して、ワークロードの合計使用量を予測し、予測される同時アクティビティに合わせてこの値を調整し、それに応じて tempdb のサイズを設定します。

tempdb の最小サイズの推奨事項は次のとおりです。

  環境サイズ DBサイズ (MB) ログサイズ (MB)
  ----------- ------------ -----------
  小 1024 256
  中 5120 1024
  ラージ 10024 2048

データベース設定

tempdbのパフォーマンスをさらに向上させるには、自動更新統計を無効にするtempdbの作業が軽減されます。統計の自動作成オプションを false に設定する

免責事項: 設定は慎重に変更する必要があります。tempdb にかかる負荷の種類によっては、設定を変更するとシステム パフォーマンスに悪影響を与える可能性があります。

tempdbのパフォーマンスを最適化するには、以下のガイドラインと推奨事項に従ってください。tempdb パフォーマンスの最適化

tempdb の使用状況を監視するにはどうすればよいですか?

ランニングtempdb のディスク容量不足できる重大な混乱を引き起こすSQL Server の運用環境では、実行中のアプリケーションが操作を完了できなくなる可能性があります。

動的管理ビューを使用すると、tempdb ファイル内のこれらの機能によって使用されるディスク領域を監視できます。また、セッション レベルまたはタスク レベルで tempdb のページ割り当てまたは割り当て解除アクティビティを監視するには、および動的管理ビューsys.dm_db_file_space_usageを使用できます。sys.dm_db_session_space_usagesys.dm_db_task_space_usage

これらのビューは、tempdb のディスク領域を大量に使用している大規模なクエリ、一時テーブル、またはテーブル変数を識別するために使用できます。また、tempdb で使用可能な空き領域と tempdb を使用しているリソースを監視するために使用できるカウンターもいくつかあります。

リンク:

答え3

一般的な簡単な答えは、高 IO を伴うものはすべて RAID 10 ディスク グループに配置する必要があるということです。また、パーティション戦略やその質問の部分は決定しましたか?

したがって、最初のディスク グループでは、おそらく 1 つのパーティション (使用可能容量は約 70 GB) を作成し、そこに OS と MSSQL アプリケーションを配置することになります。

2番目に次のパーティションを作成します

1) ページファイル用のパーティション(メモリの量によって異なりますが、約 10~20 GB)2) トランザクション ログ ファイル用のパーティション 100 GB 3) データファイル用のパーティション 100 GB

これにより、約 50 GB の空き領域が残り、これを未割り当てのままにして、要件の変化に応じてログ パーティションまたはデータ パーティションを拡張できるようになります。

興味深いことに、私は現在、Linux と Oracle を使用しているだけで、まったく同じ仕様のマシンで作業しています。あなたはパラレル ユニバースから来た私ですか?

ジェームズ

答え4

申し訳ありませんが、私は未登録ユーザーとしてこの質問をしたため、回答済みとしてマークできません。管理者からの返答を待って、私のアカウントを質問に再度関連付けることができるかどうかを確認しています。

さらに詳しく説明すると、このサーバーは大きな負荷がかからないでしょう。これは実際にはソース コントロール バックエンドです。サーバーと DAS または ISCSI SAN などを購入するのはやりすぎで、コストがプロジェクトのチャンスを台無しにしていたでしょう。私は 100 人ほどの中小企業で働いていますが、特に現在は IT 予算が厳しい状況です。

フォロー

この構成を推奨したソフトウェア ベンダーに質問しました。それを購入し、ここで質問したところ、ログ、データベース、および tempdb をすべて RAID 10 パーティションに配置するように言われました。私は DB に詳しいわけではありませんが (本当ですか??)、これは怪しいと思いました。ldfs と mdfs を同じスピンドルに混在させてはいけないことは、ほとんどの人が知っているからです。

@splattne - tempdb に関する洞察に感謝します。これは、今回のインストールや将来の SQL インストールに役立ちます。

@SuperCoolMoss - 私は自分の IT 友人ネットワークの何人かと話をしましたが、彼らもこれに同意しています。OS、ページファイル、LDF は RAID1 上に、tempdb と MDF は RAID10 上にあります。

コメントをくださった皆様にも感謝いたします。

私が読んだところによると、ディスクに関して SQL を展開する際に従うべき基本的なルールは次の通りです。私の意見では、この順序に従うべきだと思いますが、同意するかどうか教えてください。

  1. 冗長ディスクを使用する(当然のことですが)
  2. 高速ディスクを使用する(可能であればSCSI/SAS、15k)
  3. ldfファイルとmdfファイルを別のスピンドルに分離する
  4. ldfs または tempdbs には RAID5 を使用しないでください (RAID10 または RAID1 を使用してください)
  5. 最も高速なスピンドルに tempdb を配置します。可能であれば、tempdb を ldf および mdf スピンドルから分離します。

このリストの修正版をぜひ共有してください。

関連情報