반응형
/********************************************************************************************
-- Title : [2k5] 원격 서버에서 대용량 데이터 이관시 Case-By?
-- Key word : remote server paththrough
********************************************************************************************/
-- 서버A의 데이터를 서버B로 이관하는 작업을 하는 중에..
-- 원격에서 밀어 넣는 쿼리(A)와 로컬로 가져와서 넣는 쿼리(B)간에 성능 차이가 많이 나더이다.
-- 정확한 원인은 지식이 부족해서 모르겠다..ㅡ.ㅡ;

-- 현상) B쿼리는 대략 10,000건씩 저장이되고 속도도 빠르다.(모 건수단위로 저장되는건 아니지만..)
                        취소를 하면 롤백도 어느정도의 시간내에 진행된다.
            A쿼리는 대략 1,000건씩 저장되고 속도가 무진장 느리다.
                        취소를 해도 데이터가 다 들어간 뒤 롤백된다.

-- 가정) 1. A쿼리의 경우 부분집합 쿼리로 운반단위(Array Set)단위로 바로바로 저장하기에
                작은 건수로 원격 저장을 하는건 아닌가?
            2. B쿼리는 4-Partname을 사용해서 서버B로 모든 데이터를 가져온 후 한꺼번에 저장하기에
                큰 건수로 저장 되는건 아닌가?
            3. 4-partname을 사용하여 PathThrough를 지원하지 못한 차이가 있을까 싶어 OPENQUERY로
                전환해서 실행했으나 결과는 똑같다.(openquery를 대량 데이터에 반영한 내가 잘못..ㅡㅡ;;)
            4. A쿼리가 중간에 취소를 해도 데이터가 다 들어간 뒤 롤백하는 이유는... 모르겟돠..ㅡ.ㅡ;;

-- 검증) A쿼리와 B쿼리를 돌릴 때 각 서버에서 프로파일러로 모니터링 해 봤더니...

            아래 결과처럼 나오드만...

Profiler_원격_데이터_저장.xls
다운로드

-- 결론) B쿼리는 Prepare Execute하는데 A쿼리는 Cursor Open한돠. 고로 B는 통째로 읽어 저장하고
            A는 한건씩 저장...
            
-- 또 의문) A실행 중 취소할 때 데이터가 다 들어간 뒤 롤백되는 것은... 커서를 중간에 취소되었다고 
                핸들링 할 수 없어선가...???

-- 평가) 뭔가 놓치는 부분이 있는 것으로 판단되어 진당... 하지만 모르겠다... 
            근데,,, 머리가 도저히 따르질 않는다...ㅡ.ㅜ
           
   

반응형

+ Recent posts