Sql 서버 의 표 스 캔 을 깊이 이해 합 니 다.

옛날 에 우리 가 sql 을 쓸 때 가장 두 려 웠 던 것 은 sql 이다.이상 하 게 도 매우 느 리 고 느 린 것 은 파 이 프 를 훑 고 돌아 오 는 것 이다.그 작은 공 은 계속 돌아 가 고 있다.이 급 한 것 도 당사자 만 이 알 고 있다.나중에 어떤'평가 집행 계획'이 있다 는 말 을 들 었 는데 나중에 야 표 스 캔 을 피해 야 한 다 는 것 을 알 게 되 었 다.
표 스 캔
1.현상
'표 스 캔'은 듣 기 에 매우 간단 하 다.한 줄 한 줄 의 스 캔 이 잖 아.'실행 계획'이 라 고 하면 나 도 놀 것 이다.더 보기 위해 서 나 는 시 계 를 만 들 고 세 줄 의 데 이 터 를 삽입 할 것 이다.다음 과 같은 그림 이다.

 
위의 Person 은 색인 을 만 들 지 않 았 습 니 다.그리고 where,시계 스 캔 이 어떤 지 볼 까요?
 
 
   역시 극악무도 한'시계 스캐닝'세 글 자 를 보 았 다.극악무도 한 것 이 니 우 리 는 반드시 깊이 이해 한 후에 야 우 리 는 어떻게 그것 을 피 할 수 있 는 지 방법 을 생각해 야 한다.그래서 우 리 는 반드시 본질 을 이해 해 야 한다.그 문제 가 왔 다.그것 은 도대체 어떻게 쓸 었 을 까??어떻게 터 지지?이것 은 반드시 데이터 페이지 에서 말 해 야 한다.
 2.표 스 캔 깊이 이해
1:데이터 페이지
    이 학 sqlserver 는 모른다 고 말 할 이유 가 없습니다.우리 의 기록 은 모두 데이터 페이지 형식 으로 저장 되 고 데이터 페이지 의 크기 가 8k 라 는 것 도 알 아야 합 니 다.그 데이터 페이지 는 어디 에 있 습 니까?할 수 있어 요.
네 눈 에 보 이 는 것 이 확실 하 다.

언뜻 보기 에는 내 가 그림 을 많이 그 렸 으 니 절대 두려워 하지 마 세 요.많이 그 렸 다 고 해서 심오 하 다 고 생각 하지 마 세 요...........................................간단하게 분석 해 볼 게 요.
<1>:dbcc ind 명령
데이터 페이지 와 관련 된 상황 을 보고 싶다 면,sqlserver 는 정말 전용 명령 dbcc 를 제공 하여 당신 을 만족 시 켰 습 니 다.sqlserver 에 ind 명령 을 제공 하 는 인자 가 있 습 니까?알려 줄 게,있 네.
네,그런데 이 건 2588 추적 을 켜 야 합 니 다.아래 처럼.

  <2>:PageFID,PagePID,IAMFID
아까 말씀 드 렸 듯 이 데이터 페이지 는 여러 가지 가 있 습 니 다.기본 적 으로 말 하면 모두 표 데이터 페이지 입 니 다.사실은 IAM 데이터 페이지 도 있 습 니 다.이상 한 것 이 없습니다.IAM 은 표 데이터 페이지 를 추적 하 는 데 사 용 됩 니 다.그래서 위의 그림 에서 IAMFID 필드 가 Null 인 기록 은 바로 IAM 페이지 이 고 아래 의 PagePID=78 은 표 데이터 페이지 입 니 다.
 2.데이터 페이지 보기
  여러분 이 헷 갈 리 지 않도록 먼저 데이터 페이지 내부 구조 가 어떤 모습 인지 말씀 드 려 서 전체적인 인상 을 드 리 겠 습 니 다.

그림 에서 볼 수 있 듯 이 데이터 페이지 의 끝부분 에 많은 슬롯 이 있 습 니 다.이 슬롯 은 Data 구역 에 실제 기 록 된 주 소 를 가리 키 기 때문에 표 스 캔 은 바로 이 Slot 슬롯 을 스 캔 하 는 것 입 니 다.
아니면 위 에 있 는 Person 표 의 세 가지 기록 을 가지 고 말 하면 그들 은 모두 78 번 데이터 페이지 에 저장 되 어 있 는데 지금 은 호기심 으로 78 번 데이터 페이지 를 유도 해서 말 하면 한다...아주 간단 합 니 다.
두 가지 일 을 해 야 한다.
<1>3604 추적 오픈:dbcc traceon(3604)
<2>dbcc page 명령 을 사용 하여 1 번 파일 아래 78 번 데이터 페이지(pageFID:pagePID)=(1:78)를 내 보 냅 니 다.아래 와 같이...
 데이터 페이지(PAGE HEADER):
 
데이터 내용(페이지 데이터): 
 
데이터 슬롯 위치(Page Slot):
 
 
위(0,1,2)세 개의 슬롯 을 보 았 는 지,그리고 모두 해당 하 는 오프셋 주소(0x7e,0x92,0xba)가 있 습 니 다.이 주 소 는 Data 구역 의 실제 기록 한 오프셋 주 소 를 가리 키 고 있 습 니 다.
자,이제 그만 하 자.더 이상 말 하면 안 돼.씻 고 자.

좋은 웹페이지 즐겨찾기