안녕하세요
좋은 처리방안을 찾고싶어 이렇게 글을 남깁니다.
업무에 사용되는 테이블이 있는데 월 150만~200만건정도가 쌓이는 테이블이 있습니다.
현재는 약 600만건정도의 테이블이 쌓여 있고요..
데이타는 한번처리당 1건씩 쌓이는 업무입니다.
업무가 집중되는 시간때에는 초당약 30~50건이 등록이 되고요
집중되지 않는 시간에는 초당 약 1건에서 5건 정도가 등록이 됩니다.
업무외시간에는 분당 1~5건이 쌓이고요
프로파일러에서 해당업무를 처리하는 프로시저의 duration이 2000이 넘게되어 쌓이고 있습니다.
현재 600만건인데 400만건이전에는 duration 2000의 조건에 해당되지 않았습니다.
그리하여.. 처리방법을 강구하고 있는데
1차원적으로 테이블 분리를 생각하고 있습니다.
테이블 분리를 하면 개선이 되긴 할텐데 그로 인한 작업량이 많아서
다른처리방법이나 좋은 아이디어가 없을까 하여 글을 남깁니다.
답변 부탁드립니다.
감사합니다.
Comment 2
-
추억만이
2017.01.13 22:44
-
minsouk
2017.01.15 03:01
wait 분석을 해보시길 추천 드려요~ 다양한 원인에 의해 처리속도가 매우 달라질 수 있으니 wait 분석을 해보세요 별로 어렵지 않아요~
일반적으로 clustered index 가 primary key 로 잘 걸려있고 해당 컬럼들이 hot spot 요소가 되지 않는다면 heap 보다 훨씬 빠르게 들어갑니다. heap 이 훨씬 insert 가 느리니 잘 분석하시고 적용하시길 바랍니다. clustered index 가 identity 나 datetime 유형에 1개 컬럼으로 구성되어 있다면 heap 과 비슷한 속도가 나오게 됩니다. 당연하겠죠? 이 페이지가 메모리 보호 latch 를 위한 hot spot 이 되니 말입니다. 자세한 내용은 분석해봐야 알겠지만 제 경험상 초당 50개 insert 는 latch 에 영향을 거의 받지 않습니다. 바꾸어 말하면 core 1개 짜리 sql server 는 초당 insert 를 50개도 못 처리 할 수 있다는 말이거든요.........
Pk 가 필요하다면 pk 재생성 하되 nonclustered index로 만드시고 필요없다면 pk 없애세요.