비트맵연산자에 대해서

맨즈밤 2013.06.11 14:18 Views : 5095

실행계획을 보다가 비트맵 연산자가 떴길래 질문드립니다.  도움말을 봐도 알쏭달쏭하네요..   첨부파일로 실행계획 올렸구요.

쿼리는 아래와 같습니다.

SELECT B.S_SMSYN
  FROM SM_POS_DB.DBO.CLIENT_T A
                INNER JOIN #TMPCLIENTS B
               ON A.CREDIT_CARD_NO = B.S_BCNUM
 WHERE A.SMS_YN   <> B.S_SMSYN

 

제가 해석한 바는

1.6번라인에서 임시테이블인 #TMPCLIENTS 를 풀스캔합니다. 결과행은 217013건 . 병렬로 8개의 쓰레드로 실행되었고 , 캡쳐에는 없지만

   쓰레드별로 24000~37000 정도 ROW가  불규칙하게 분포하고 있습니다.

 

2.5번라인에서 리파티션을 거치면서 8개의 쓰레드에서 27000정도의 균일한 분포로 쓰레드별 ROW가 재분배됩니다.

 

3.여기부터가 애매한데요. 4번라인에서 비트맵연산자를 거치면서  Bitmap1005가  정의됩니다.

 

4.8번라인에서 총데이터 건수 230만건인 CLIENT_T 을 스캔하는데 막상 row수는 대략 30만건정도만 검색되어 나왔습니다. 실행계획의

  WHERE 절을 보면

       WHERE:(PROBE([Bitmap1005],[SM_POS_DB].[dbo].[CLIENT_T].[CREDIT_CARD_NO] as [A].[CREDIT_CARD_NO])))

  이렇게 있는데요. 제가 해석한 바에 따르면 쓰레드별로 스캔을 하되 빌드인풋으로 메모리에 있는 Bitmap1005  값과  CLIENT_T 의

  CREDIT_CARD_NO 값과 비교를 하는데 ,확실하게  조인대상이 아닌행만 필터링으로 분리해내는듯 합니다.

 #TMPCLIENTS  와 CLIENT_T 는 키값을 기준으로 거의 1:1이기 때문에  정확한 비교가 되었다면 217013과 근접한 값이 나왔어야 겠죠.

 쓰레드별로 35000~45000 정도 ROW 검색됩니다.

 

5.7번라인에서 리파티션을 거치면서 쓰레드당 약 38000건정도의 균일한 분포로 쓰레드별 ROW가 재분배됩니다.

 

6.3번라인에서 보이듯 대망의 해쉬조인 , 그리고 게더스트림으로  쓰레드별로 있는 값 합치기..

 

 이름이  BITMAP인것으로 보아 비트연산을 통해서 기다,아니다 판단되는게 아닌가 합니다.   실행계획보는게 어설퍼서  맘대로 해석해봤는데요.  잘못된점이나 참고삼아야할점 있으면 지적 부탁드립니다.

 

 

 

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 33949
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 17162
6883 엑셀 파을을 업로드해서 DB에 저장하는데요.. [1] 3bong 2013.06.13 9519
6882 sa 계정 비번이 저절로 바뀌는거 같아요 [1] 삐돌이 2013.06.13 5143
6881 혹시.. EDI 시스템에 대해서 설계 해 보신분 계신가요? [1] 다복이 2013.06.13 4521
6880 2012 SSMS 불편 [4] dorhi73 2013.06.12 32939
6879 Update Trigger 문의 [2] 에퀴페 2013.06.12 5343
6878 sp_rename 하면 테이블 이름외의 변경에 대해서 [1] 전념 2013.06.12 6785
6877 끝 문자열 처리 문의요 [2] afddsa 2013.06.12 4659
6876 뷰에 인덱스 생성하는데 오류발생..문의 [4] pobiblue 2013.06.12 5152
6875 버퍼풀 사용량 제한 관련 문의 드립니다. 수노 2013.06.12 4952
6874 문자열 변환 문의드립니다. [2] 무라무라 2013.06.11 9050
» 비트맵연산자에 대해서 [1] 맨즈밤 2013.06.11 5095
6872 SQL 질문인데요.. [3] 줄리 2013.06.11 32657
6871 MS SQL Uninstall 관련 질문드립니다. [3] 트리플 2013.06.11 35208
6870 INSERT와 DELETE의 처리시간 및 트랜잭션 로그 사이즈 질문 [1] 이노(inno) 2013.06.11 78301
6869 [ ] 는 언제쓰고 어떨때 쓰는거죠? [1] 로쏘네리 2013.06.11 36901
6868 if exists 문 관련 질문입니다. [3] 치맥 2013.06.11 8445
6867 mysql 좀 알려주세요 .... [1] jiyoooon 2013.06.10 52348
6866 nvarchar 일경우 가로값 합계출력 [4] afddsa 2013.06.10 9957
6865 성능모니터 하루하루 받고 있는데, 한달치 한방에 보는 방법아시는분... [3] 공유맨 2013.06.10 7097
6864 mysql 질문좀 드릴게요 ...... [2] jiyoooon 2013.06.08 7410





XE Login