고도로 표준화되지 않은 테이블에 삽입을 수행하는 코드가 있습니다. 테이블에는 ~ 100에서 300+ 범위의 열 수가 있습니다. 이것은 Windows Server 2008에서 실행되는 SQL Server 2008 R2입니다.
각 삽입은 동일한 트랜잭션에서 여러 테이블에 삽입하는 것으로 구성됩니다. 일부 인서트는 NHibernate에 의해 일괄 처리되지만 일부 인서트는 배치 할 수 없지만 그럼에도 불구하고 모두 동일한 트랜잭션에 있습니다.
삽입을 수행하는 코드를 반복해서 호출하여 500 회 삽입을 수행하면 평균 ~ 360ms가됩니다.
이상한 점은 4 개의 프로세스 (Windows Server 2008의 4 가지 명령 프롬프트에서 실행되는 동일한 exe)를 사용하여 테스트 코드를 동시에 실행하면 호출 당 삽입 성능이 훨씬 좋아집니다. 90ms (거의 X4 빠름)만큼 빠른 버스트가 보입니다. 코드에서 삽입 시간을 측정하고 있습니다.
4 개의 프로세스는 서로에 대해 아무것도 모르기 때문에 이것이 SQL Server와 관련이 있다고 가정하지만 그 이유는 전혀 없습니다. 인서트가 그다지 빈번하지 않을 때 동일한 성능을 얻을 수있는 구성이 있는지, 왜 이런 일이 발생하는지 알고 싶습니다.
DB 수준에서 무슨 일이 일어나고 있는지 이해하기위한 SQL Server 모니터링 방법에 대한 제안도 환영합니다.