저는 SQL Server 2016을 사용하여 조세 처리 회사에서 근무합니다. 우리는 수백만 세금 정보 반환을 처리하고 동시 멀티 스레딩 병렬 처리 시스템을 설정합니다.이벤트 소싱/CQRS 클러스터 된 인덱스 및 분할
병렬 처리 작성 이벤트 저장소의 경우, 클러스터 된 색인은 어떤 값이어야합니까? UniqueIdentifier Guid 또는 (Uniqueidentifier guid에서 Ncx와 Identity (1,1)의 클러스터 된 인덱스) 또는 클러스터 된 인덱스가 없습니까 (힙 사용)?
일반적으로 이벤트 저장소 테이블 쓰기를 파티션 할 것을 권장합니까?
우리는 쿼리 모델을 업데이트 할 때 병렬 처리를 사용하여 읽기 모델을 업데이트해야합니까? 아니면 단일 스트림 업데이트를 수행해야합니까?
또한 클러스터 된 인덱스를 UniqueIdentifierGuid 또는 (UniqueIDifier GUID에서 Ncx를 사용하는 Identity (1,1)의 클러스터 된 인덱스) 읽기 이벤트 모델에 적용해야합니까?
우리는 읽기 모델 테이블이나 다른 방법을 파티션해야합니까?
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/
안녕 다니엘, 대부분의 대답은 한 부분에서, 좋아 보인다 , 나는 테이블에 병렬로 삽입, 멀티 스레딩을 작성합니다 prob는, 그래서 '병렬로 디스크에 기록'될 것이다 – AppleBook89
@BlueCar 파일에 많은 쓰레드를 쓸 수는 있지만, 드라이브가 동시 쓰기를 지원하지 않는다면, 나는 그걸 알지 못한다. 병렬로 삽입하는 것은 직렬 쓰기보다 빠르지 않을 것이다. –