0

私は、他の非常に多くの人によって解決されたと確信している状況にあります。私はそれを解決する方法についてのアイデアを持っていますが、調査すると、多くの人が私が考えていることを実装していないようです.

これが私たちの状況です--

-- OLTP DB として構造化され、使用される単一のデータベース (SQL Server) があります。

-- トランザクション コンテキストで必要なデータをバッチ処理する必要があります。

-- 内部 UI を介した最新のレポートが必要です

問題は、既にご想像のとおり、OTLP データベースとの間でデータをバッチ処理するときに、リソースを求めて競合し、場合によってはトランザクション テーブルをロックすることです。

私がやりたいことは、2 つ目のデータベースを導入し、2 つのデータベースをミラーリングして、トランザクション アプリケーションからアクセスできるのは 1 つの DB のみにすることです。トランザクション データベースにデータをバッチ処理する必要がある場合、データはセカンダリの非トランザクション データベースに出入りし、ミラーリングによって同期が行われます。

このアプローチを調査したところ、あまりヒットしませんでした。

これを処理するためのより良い/より受け入れられる方法はありますか?

4

1 に答える 1

0

同じ検索を行っている番号を見つけることができない私の意見ですが、同期を処理できるようにミラーリングされたデータベースにバッチ処理すると、まったく同じか、おそらくさらに悪いロックが発生すると思います。

最初のステップとして、スナップショット分離 (ALLOW_SNAPSHOT_ISOLATION) と READ_COMMITTED_SNAPSHOT を有効にすることをお勧めします。

https://msdn.microsoft.com/en-us/library/tcbchxcb(v=vs.110).aspx

https://www.brentozar.com/archive/2013/01/implementing-snapshot-or-read-committed-snapshot-isolation-in-sql-server-a-guide/

複数のスレッドにまたがる同期結果が期待されるトランザクション トランザクションを長時間実行している場合に起こりうる影響について、Brent Ozar による警告に注意してください。

于 2016-02-19T20:03:21.287 に答える