SQL 2008 R2 64bit 버전 사용
하루에 1억건 정도 들어가는 테이블이 일자별로 존재합니다.
composite index를 unique cluster 로 구성하여 테이블을 만들고,
주기적으로 bulk insert로 데이터를 삽입합니다.
문제는 composite index 필드 항목이 where 조건에 포함이 되어 있는 프로시져를 호출하면
최초에 조회가 너무 오래 걸립니다.( 1분 이상)
dbcc freeproccache
go
dbcc dropcleanbuffers
go
Comment 7
-
minsouk
2013.10.06 17:43
-
땡구
2013.10.06 18:13
쪽지로 실행계획 드렸습니다.
-
minsouk
2013.10.07 00:25
네, 실행계획은 잘 봤습니다.
인덱스도 잘 사용하는 것으로 확인 되었습니다.
최초 bulk insert 후 통계가 없을겁니다. (통계의 최초 생성시점은 select 가 최초로 들어오는 시간 입니다.)
그러므로, bulk insert 후 update statistics Cycle_Data_SUPER3_IDU_20200102 (강제 통계 업데이트) 를 수행 한 후
쿼리를 수행해 보시면 좋을듯 합니다.
위와 같은 절차를 거친 후에도 쿼리가 여전히 느리다면, 실제 실행계획을 첨부해 주시길 바랍니다.
아래는 통계가 udpate statistics 를 통해서 생성되는 과정과
최초 select 를 통해서 생성되는 과정을 스크립트로 증명한 겁니다.
그러므로, 최초 1억건의 데이터에 대한 통계를 생성하는 시간이 길어 최초 쿼리만 수행이 느릴 수 있습니다. (최초쿼리는 통계를 생성하는 시간이 포함되어 있음)
참고로, where 조건이 없으면 최초 쿼리도 통계를 생성하지 않습니다.
if object_id ('tbl') is not null
drop table tbl
gocreate table tbl
(idx int
, c1 int
)
gocreate clustered index cl_tbl on tbl (idx, c1)
goinsert into tbl values (1,1)
go 1000
dbcc show_statistics (tbl, cl_tbl)
goupdate statistics tbl
godbcc show_statistics (tbl, cl_tbl)
go
if object_id ('tbl') is not null
drop table tbl
gocreate table tbl
(idx int
, c1 int
)
gocreate clustered index cl_tbl on tbl (idx, c1)
goinsert into tbl values (1,1)
go 1000
dbcc show_statistics (tbl, cl_tbl)
goselect * from tbl where idx = 1
godbcc show_statistics (tbl, cl_tbl)
go -
땡구
2013.10.07 17:28
감사합니다.
bulk insert 이후 update statistics table 을 수행하여 확인 중에 있습니다.
확실히 달라진 것 같습니다.
이후에 실행되는 프로시져의 실행 시간을 보면
==============================================
SQL Server 구문 분석 및 컴파일 시간:
CPU 시간 = 5047ms, 경과 시간 = 5774ms.
SQL Server 실행 시간:
CPU 시간 = 0밀리초, 경과 시간 = 129밀리초
==============================================
구문 분석하는 분에서 거의 6초가 걸리고 있습니다.
(캐쉬 삭제 후 1천 3백만 건 기준으로 테스트. 계속 확인 중)
이 구문분석 시간을 좀 더 줄일 수 있는 방법을 없을까요?
-
minsouk
2013.10.07 18:10
traceflag 전체와 동작시 실제 실행계획을 첨부해 주세요
-
minsouk
2013.10.07 20:11
혹시 한번 보여주시면 분석을 한번 해보고 싶습니다 01099670955 입니다 무료이고 언제든 편하신 시간에 연락주세요 -
항해자™
2013.10.08 22:30
저도 연락 주시면 좋아합니다^^
xml 실행계획을 전달해 주세요