약 500 명이 넘는 사용자를 지원하는 Windows 응용 프로그램 (.Net으로 작성)이 있습니다. 이 응용 프로그램에는 약 40k 레코드 (MS SQL Server에서)를 가져와 하루에 몇 번씩 실행하는 특정 기능이 있습니다.큰 데이터베이스 쿼리가 전체 시스템에 영향을 미침
그러나이 큰 쿼리를 실행하면 다른 사용자가 'Timing Out'인 것처럼 보입니다.이 쿼리는 큰 쿼리가 서버 리소스를 소모하여 다른 사용자가 시스템을 사용할 수 없도록하는 것 같습니다. 정확히.
40k 쿼리가 정확히 대량은 아니지만 상당히 크기가 있다고 생각하기 때문에 리소스 할당이 어떻게 작동하는지 이해하려고합니다.
우리의 애플리케이션 아키텍처는 UI입니다 -> 서비스 레이어 -> 웹 서비스 -> 데이터베이스
이 문제를 일으키는 또는 내 쿼리가 가능한 '잠금'SQL 데이터베이스 및 두지 않을 수 웹 서비스를 할 수 다른 사용자가 그와 상호 작용합니까?
SQL 쿼리는 문자 그대로 특정 테이블의 모든 레코드를 선택합니다 (이 테이블에는 다른 테이블에서 추출 된 데이터가 있으며 현재 약 40,000 개의 레코드가 있으며 테이블에는 약 50 개의 열이 있습니다).
SELECT *
FROM MyTable
꽤 많은 검색어입니다. 조인이없고 저장 프로 시저를 사용하고 있습니다.
아마도 후자의 경우 쿼리는 데이터베이스 서버를 호깅합니다. 당신은 우리에게 쿼리와 관련 테이블 구조를 보여줄 수 있습니까? 아니면 실행 계획일까요? 쿼리가 매우 큰 결과 집합을 반환하여 웹 서버에서 메모리 사용량이 급증 할 수도 있습니다. – alexn
당신은 어떤 질문을합니까? 얼마나 많은 테이블이 영향을 미치나요? 그것은 많은 조인을 가지고 있습니까? 테이블을 직접 사용하지 않고 뷰를 사용할 수 있습니까? 저장 프로 시저를 사용할 수 있습니까? 결과를 캐시 할 수 있습니까? –
이 쿼리를 실행하고 SSMS의 모든 레코드를 반환하는 데 얼마나 오래 걸립니까? –