2017-09-11 4 views
0

私は、SQL Server 2016を使用して税務処理会社に勤務しています。私たちは何百万という税務情報を処理し、並行マルチスレッド、並列処理システムをセットアップします。イベントソーシング/ CQRSクラスターインデックスとパーティショニング

  1. 並列処理書き込みイベント・ストアの場合は、クラスタ化索引を有効にする必要がありますか? UniqueIdentifier GUID、または(Unique Identifier GUIDでNcxを持つアイデンティティ(1,1)のクラスタ化されたインデックス)、またはクラスタ化インデックスがない(ヒープを利用する)

  2. 通常、イベント・ストア・テーブルの書き込みをパーティション化することをお勧めしますか?

  3. 読み込みモデルをクエリ用に更新する場合、読み込みモデルを更新するために並列処理を使用する必要がありますか?または、単一ストリームの更新を行う必要がありますか?

  4. また、クラスタ化インデックスは、読み取りイベントモデルのUniqueIdentifierGuidまたは(UniqueIDifier GUIDのNcxを持つIdentity(1,1)のClusteredインデックス)にする必要がありますか?

  5. 私たちは読み込みモデルテーブルまたは他の方法を分割する必要がありますか?

uniqueidentifierguidsに索引が悪いクラスタ化インデックスされている一般的なルールがあり、大規模なページの断片化、遅くioは書き込み、大きなディスクスペースを引き起こします。 https://blogs.msdn.microsoft.com/sqlserverfaq/2010/05/27/guid-vs-int-debate/

しかし、アイデンティティ(1,1)整数列のインデックスは、ラッチ競合を引き起こし、最後のページは並列処理で「ホットスポット」を挿入します。 http://www.sqlpassion.at/archive/2014/04/15/an-ever-increasing-clustered-key-value-doesnt-scale/

答えて

0

個々のニーズは、独自のシステムのアーキテクチャによって異なります。一般的には、ボトルネックが何であるか(またはなるか)を判断するために、テスト、測定、プロファイリングができる必要があります。

例えば、いつでも並列に書くことができるノードの数と、必要なスループットが瞬時にあります。

  • あなたはおそらく、GUIDのID(インデックス化)およびクラスタ化インデックスのための第二のカラムをしたい:

    は、ここで作業を開始するには、2つのヒントがあります。私はデータベース内で生成されているため、ID(シーケンシャル番号)列をClusered Indexとして使用します。一般に、物理的には並列にディスクに書き込むことはありません(たとえ並列にしようとしたとしても)ので、速くてシンプルにしてください!

  • 「モデルを読み込む」ごとに、一般にイベントをシリアルで処理する必要があります。複数の「モデルの読込」を行うことができ、分離されたデータを並列に構築することができます。

私はあなたがどのように身近なEventSourcingとわからないが、私は十分にこれらの2つのリソースをお勧めすることはできません。

http://docs.geteventstore.com/introduction/4.0.2/event-sourcing-basics/ https://leanpub.com/esversioning

+0

こんにちはダニエル、答えはよさそうだ最も、一度に、私はテーブルに並列、マルチスレッドでのインサートを書くことになりますPROBので、私は「並行して、ディスクへの書き込み」されます – AppleBook89

+0

@BlueCar多くのスレッドをファイルに書き込むことはできますが、そのドライブが並行書き込みをサポートしていない限り、それはわかりませんが、並行して挿入を行うことはシリアル書き込みより速くはありません。 –

関連する問題