여기 나는 한 가지 더 어려운 문제에 직면하고 있으며 도움을 얻기 위해이 사이트를 켜고 있습니다.단일 테이블에 다중 삽입
저는 비즈니스 로직을 수행하고 결과를 테이블에 삽입하는 하나의 웹 서비스를 보유하고 있습니다. 내 응용 프로그램이 최소한의로드로 작동하면 정상적으로 작동합니다.
로드가 무거 우면 내 INSERT
SQL 문 시간이 초과되었습니다. 연결 시간 초과 및 명령 시간 초과가 증가했습니다. 그러나 문제는 같은 웹 메서드를 호출하는 스레드가 너무 많다는 것입니다. 그냥 힌트를주고, 무거운 하중에 OPEN SQL 연결의 내 번호는 500 +로 간다. 참고로 모든 명령이 끝난 후에 연결을 종료했습니다.
여기에서이 작업을 최적화하려면 어떻게해야합니까?
INSERT
데이터를 데이터 테이블에 저장하고이 데이터 테이블을 APPLICATION 변수에 저장할 계획입니다. 그리고 2 분마다이 데이터 테이블의 데이터를 데이터베이스에 삽입하십시오.
여기 내 인생을 부드럽게 할 수있는 아이디어가 있습니까? 내가 관리 스튜디오에서
SQL 서버 구문 분석을 삽입 쿼리를 실행하고 시간을 컴파일 할 때
가, 자세한 내용은 여기편집
감사 : CPU 시간 = 0 밀리 초, 경과 시간 = 0 ms.
SQL Server 구문 분석 및 컴파일 시간 : CPU 시간 = 0 ms, 경과 시간 = 11 ms.
테이블 'IndexTable1'. 스캔 카운트 0, 논리적 읽기 2, 물리적 읽기 0, 미리 읽기 0, 로브 논리적 읽기 0, 로브 물리적 읽기 0, 로브 미리 읽기 0으로 읽습니다.
테이블 'IndexTable2'. 스캔 카운트 0, 논리적 읽기 2, 물리적 읽기 0, 미리 읽기 0, 로브 논리적 읽기 0, 로브 물리적 읽기 0, 로브 미리 읽기 0은 0을 읽습니다.
테이블 'fulltext_index_docidstatus_171147655'. 논리 스캔 횟수 0, 미리 읽기가 물리적 0을 판독하고, 11 판독 0 판독 논리 LOB 0 판독 로브 물리적 0 판독 로브 미리 읽기가 0
테이블 'MAINTABLE'읽는다. 논리 스캔 횟수 0, 로브 물리적 0 판독 로브 미리 읽기가 0
(영향 1 행 (들))
를 판독 논리 LOB 0 판독하고, 미리 읽기 0 판독, 물리 4 판독 (28) 판독(1 행 영향)
SQL Server 실행 시간 : CPU 시간 = 0 ms, 경과 시간 = 69 ms.
SQL Server 구문 분석 및 컴파일 시간 : CPU 시간 = 0 ms, 경과 시간 = 0 ms.
SQL Server 실행 시간 : CPU 시간 = 0 ms, 경과 시간 = 0 ms.
연결 풀의 크기는 어느 정도입니까? – Jordan
잠재적 인 병목 현상을 확인하려면 응용 프로그램을 완전히 벤치마킹해야합니다. 우선, SQL Server의 "계획 설명"을 익히고 인덱스를 확인한 다음 CPU 성능, RAM 및 디스크 I/O 사용률을 확인하기 위해로드중인 Windows 성능 모니터를 살펴보십시오. 이 링크에서 봐도 다음과 같습니다. 1) http://msdn.microsoft.com/en-us/library/ff647768.aspx 2) http://msdn.microsoft.com/en-us/library/ms178071.aspx – paulsm4
Producer/Consumer 패턴을 보아 공유 컨텍스트에서 삽입을 처리 했습니까? 이렇게하면 연결 수를 제어하고 SqlBulkCopy를 사용할 수 있습니다. – Lloyd