SQL 관련 문의 드립니다.

멀린   
   조회 5263   추천 0    

MS SQL에 다른 형태의 테이블 2개가 있습니다.
 
두 테이블의 용량은 거의 동일하나,
A 테이블은 컬럼수가 100개에 행 수는 100만개
B 테이블은 컬럼수가 5개에 행 수는 200만개.
 
두 테이블에 각각 로컬 Select 쿼리시 결과 값은 B가 빨리 나옵니다.
외부에서 동일한 쿼리를 해도 B가 빠릅니다.
 
A 테이블에 대한 Select 쿼리시 클라이언트 측 대역폭 30% 정도 점유합니다.
B 테이블에 대한 Select 쿼리시 클라이언트 측 대역폭 80% 정도 점유합니다.
 
 
질문은 외부에서 A 테이블에 대한 쿼리속도를 끌어올릴 수 있는 방법이 있을까요?
B 테이블 쿼리시 전송속도만큼만 나와줘도 좋을텐데 SQL 구성의 네트워크 패킷 사이즈 변경으로는 속도 향상이 없는 듯 합니다.
(변경은 기본 4096 바이트에서 512,1024,8192,12800까지 해봤습니다.)
 
 
 
짧은글 일수록 신중하게.
곽순현 2013-10
동일시스템에서 동일쿼리로 비교된것이겠지요?
그냥 단순히 봐서는 DB를 긁어오는 웹페이지 or CS프로그램에서
자주 사용하는 컬럼을 인덱싱하는 방법이 있지 않을까요?
저도 잘 모르므로 다음분께 패쓰~
공팔이 2013-10
쿼리와 DB 최적화가 된 상태라는 가정하에서는 크게 나아질게 없을걸로 보입니다.
셀렉트된 Data가 움직이는 양은 동일하니까요.
저라면 아래의 순서로 검토해볼것 같습니다.
DB튜닝 -> 네트웍확장여부 -> Data압축
오프라인 2013-10
단순 컬럼(COLUMN)의 개수로만 양을 추정할 때 A테이블 행(ROW)의 길이가 20배가 됩니다.
그러면 입출력 단위인 BLOCK에 A테이블은 한개의 행이 들어갈 때 B테이블은 20개가 들어가게 됩니다

단순 조회(WHER/ORDER BY 없이)로 동일 수의 행을 조회 시 A테이블의 디스크 READ가 20배가
필요해서 I/O 병목에 걸릴 수 있습니다. 디스크 사용량(I/O)을 모니터링 해보시는 게 좋을 것 같습니다.

그리고 네트워크 사용량도 A 테이블에서 모든 컬럼이 아닌 B테이블 컬럼 수(5개) 만큼만 쿼리를 한다면
디스크 READ가 20배가 되어야 동일한 대역폭을 사용하게 될 것으로 생각됩니다.
milyman 2013-10
MS sQL 안에 있는 프로파일러를 사용해보세요.
어느 쿼리가 어떻게 IO를 일으키는지 볼수있습니다.
이동준 2013-10
윗글만 봐서는 정확히 파악이 되지 않지만..
전체 Row의 수가 중요하다기 보다는....
Select해서 뽑아 내야 하는 Row의 수가 중요합니다.

전체 Row의 수는 인덱스 단편화만 심하지 않다면  몇천만건이 넘어가지 않는다면 심각하게 문제가 되지 않습니다.
몇천만건이 넘어 간다면...

파티셔닝테이블로 물리 공간을 분산해서 저장하는 방식으로 테이블을 설계해야 합니다.

일반 상황에서 100~200만건을 한번에 Select할일이 자주 있지는 않겠죠,
그리고 MS-SQL 같은경우 Oracle과 달리 Select시에도 Lock이 걸립니다.
Select를 실행해 놓고 다른 Insert , Update , Delete가 실행되지 못하고 대기 하다가.. 롱트랜젝션으로
테이블 Lock을 걸어 버리기도 합니다...

필요한 만큼의 정보만 Where절로 걸어서 사용하시는게 답이 아닐까합니다.


QnA
제목Page 3380/5725
2015-12   1766089   백메가
2014-05   5240607   정은준1
2013-10   5742   이이크
2013-10   5264   멀린
2013-10   6788   정창진
2013-10   5433   황혼을향해
2013-10   5997   임종열
2013-10   5678   설영수
2013-10   5666   불무골
2013-10   5338   user
2013-10   9265   김효수
2013-10   5855   user
2013-10   5190   회로쟁이
2013-10   5961   무아
2013-10   5042   거니네
2013-10   5630   조명수
2013-10   6058   무슨생각
2013-10   5383   명성호
2013-10   5954   유병국
2013-10   8731   박성만
2013-10   9469   YOONSOO
2013-10   9193   김상일