一度に 250 万行を含む SQL Server 2012 テーブルがあります。アイテムは常にテーブルに書き込まれますが、テーブル内の最も古い行は、メンテナンス ウィンドウ中の毎日の終わりに切り捨てられます。
通常はサマリー テーブルに対してレポートする .NET ベースのレポート ダッシュボードがありますが、インデックス セットを利用して、このテーブルから数行をフェッチする必要がある場合があります。
このテーブルに対してレポートを作成すると、最大 1 分間、このテーブルに新しい行が書き込まれない可能性があります。これは、製品にとって非常に悪いことです。
これはレポート プラットフォームであり、このテーブルの行は決して更新されないため (挿入のみ - Twitter ストリーミングを考えてみてください。ただし、異なる種類のデータ用です)、行が挿入される原因となるトランザクションのギャップを常に待機する必要はありません。このテーブルに。
レポート用のデータを選択する場合、トランザクション内で SNAPSHOT 分離レベルを使用してデータを選択するか、NOLOCK/READ UNCOMITTED を使用するのが賢明でしょうか? selectステートメントの周りにSQLTransactionを作成すると、挿入がブロックされますか? 現時点では、SQLCommand インスタンスをトランザクションでラップしていませんが、それでもロックが発生することはわかっています。
理想的には、書き込みが決してブロックされず、ダッシュボードが可能な限り反応する結果が欲しいです。私の最高のプレーは何ですか?