大規模なSQL Serverデータベース設計の提案


8

MSSQL 2008 R2 Standardでデータベースを作成し、そこに多数のレコードを格納します。毎年1つのテーブルで2億件以上のレコードを見積もり、主にデータのUPDATEまたはDELETEをほとんど行わずにINSERTを実行しています。これは、履歴レコードを毎日挿入するデータアーカイブシステムです。ユーザーの要求に応じて、この履歴レコードに関するさまざまな種類のレポートを生成するため、いくつかの懸念があり、技術的な入力とアドバイスが必要です。

  • この種のアーカイブテーブルとデータベースを管理する最良の方法は何ですか?

1
大規模なデータベース(または1つの大規模なデータベース)を設計している場合は、最初から正しく設計することが重要であり、そのための最良の方法は、あなたが話しているデータベースの専門家を雇うことです。 。これは、アプリケーション開発者を雇うよりも重要です。
HLGEM 2012年

回答:


12

これが私の意見です:

  1. 更新/削除がほとんどない場合は、ページフィル係数を95%に増やすことができます。これはスペースと読み取りを節約します。いくつかのテストを行います。
  2. 年などの幅広いカテゴリに基づいてテーブルを分割します。
  3. これらのパーティションを異なるファイルグループに配置します。

7

年間2億行は特に大きくありません(行が異常に大きい場合を除く)。適切なデータベース設計原則(正規化)に注意を払い、インデックス作成やパーティション分割などの標準機能を利用する必要があります。もちろん、適切なハードウェアも重要です。

ここには具体的なアドバイスをするのに十分な情報がありません。詳細な設計と実装についてサポートが必要な場合は、誰かを雇うことを検討してください。


ご入力いただきありがとうございます。私たちはあなたが言及している設計原則を適用しましたが、開発部分が完了するとインデックス付けに取り組みます。パーティション分割にはエンタープライズライセンスが必要だと思います。現時点では、スタンダードエディションのライセンスがあります。
kodvavi 2011

6
  • 設計によって、挿入が常にテーブルの最後になるようにしてください。ヒントクラスタ化インデックス。

  • 最小限のメンテナンスを維持するために必要なレポートをサポートする非クラスター化インデックスはほとんどありません。これらのレポートは事前に生成されていますか?はいの場合は、この質問を検討してください。レポートの生成に2時間かかる場合は問題ありませんか(インデックスなし)または1分(インデックスあり)。たぶん、レポートのインデックスが1つ少なくなるまで2時間かかることは問題ありませんか?またはそうでないかもしれません?レポートが適切に事前生成されていない場合、これは別の問題です。ユーザーが待つのが好きではないため、レポートをサポートするためにさらに多くのインデックスを実装する必要がある場合があるためです。

  • このデータベースの記述方法から、多くの行を期待しているように聞こえ、データは追加されて大きくなります。このシステムをバックアップする方法を検討しましたか?ほとんどのデータは同じで新しいものを追加するだけだと思いますか?このシステムのビジネス要件はわかりませんが、1〜2年でこれはかなりのサイズのデータ​​ベースになり、多くの完全バックアップを作成できない場合があるようです。定期的に(毎週?)、差分(毎日?)、トランザクションログ(毎時?)で1つのフルバックアップを作成することを検討してください。アーカイブシステムでは、サイズが問題になることがあります。


1
ご意見をいただきありがとうございます。実際、データベースには農業製品に関する統計と歴史的記録が含まれています。成長はかなりのものであり、バックアップに関するあなたの入力は役に立ちます。私たちはすでにバックアップルーチンを計画しており、あなたの入力はいくつかの大きな価値を追加しました。異なるデータベースの既存のバックアッププロセスには、多少同じアプローチがあります。日次差分および週次完全バックアップ。
kodvavi 2011

1
btw設計はほぼ最終段階であり、要件の報告とその作業にSSRSを使用していますが、運用に入る前に微調整を行い、パフォーマンスを向上させています。
kodvavi 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.