web-dev-qa-db-ja.com

1テラバイトを超えるデータを含むSQL Serverデータベースの管理

最近、1テラバイトを超える監査データベースがあり、ストレージの問題があるため、経営陣は選択肢を探しています。

私の提案は毎年の終わりにバックアップを取り、データベースを管理しやすい状態に保つすべてのテーブルを切り捨てます。

同じスペースを再び消費するため、アーカイブデータベースを用意することは有益ではありません。

毎年、より多くのスペースを割り当てるか、データベース全体を切り捨てるという経営陣に提案できるオプションについて、専門家の意見を聞きたいと思います。

6
SQL_NoExpert
  1. より広いスペースを確保してください。その大量のデータを保持するというビジネス要件がある場合、彼らはお金を考え出す必要があります。
  2. 最大のテーブル(およびインデックス)のページ圧縮をオンにします(テストテストテスト!)。ログデータは非常に適切に圧縮されますが、その量のデータの圧縮にはしばらく時間がかかります。
  3. ポイント1を参照
8
Trubs

私は Trubs '上記の回答 に追加しています。これは、彼が正しいトラックにいるため、賛成投票する必要がありますが、ここにもオプションを追加しています。

  1. スペースを追加する(上記のとおり)
  2. インデックスのページあたりの平均空き容量が多い場合は、 ALTER INDEXREORG ¹ステートメント(十分な空き容量がある場合は、代わりに REBUILD 操作をお勧めしますが、スペース不足について話しているため、この操作は大きなテーブルでは完了しない場合があります)。 1ページあたりの平均空き容量を確認するには、 sys.dm_db_index_physical_statsSAMPLEDまたはDETAILEDモードのいずれかを使用するdmv。これには時間がかかります。
  3. 一部のデータを削除します。 削除をバッチ処理 して、過剰なロギングとロックを減らすことができます。または、より良い長期的な解決策は、 テーブルとインデックスのパーティション分割 ²と switch /最後のパーティションを切り捨てる より高速なデータ消去。
  4. ページまたは行の圧縮を有効にする ²(上記のとおり)。 sp_estimate_data_compression_savings ストアドプロシージャ。
  5. SQL 2016以降にアップグレードした後、テーブルを変換して クラスター化列ストアインデックス ²を使用できます。これらにより、使用可能な最高の圧縮率が得られ、これらのテーブルに対するクエリ実行時間も改善される可能性があります。注:SQL 2014(またはSQL 2012)を使用してこれを行うことはお勧めしません。この機能は、最終的に適切な機能がリリースされたSQL 2016までベータ版であると見なすためです。
  6. Azureを利用する Stretch Database これは、クラウドであまりアクセスされないデータを保存できるハイブリッドソリューションです。これには費用がかかり、少なくともSQL 2016を使用する必要がありますが、将来のエディションの機能について話しているので、それもリストに含める必要があります。

¹-Enterprise Editionでのみ利用可能

²-SQL Server 2016 SP1以降のSQL Serverのすべてのエディションで利用できます。これは、このService Packより前のエンタープライズのみの機能です。

5
John Eisbrener