>데이터 베이스 >MySQL 튜토리얼 >내 창으로 표시된 집계 쿼리에 높은 논리적 읽기가 표시되는 이유는 무엇입니까?

내 창으로 표시된 집계 쿼리에 높은 논리적 읽기가 표시되는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-24 04:15:11197검색

Why Are My Windowed Aggregate Queries Showing High Logical Reads?

공통 하위 표현식 스풀을 사용하는 창 집계 함수 실행 계획의 높은 논리적 읽기

대형 테이블에 대해 보고된 높은 논리적 읽기가 실행 계획에서 종종 관찰됩니다. 공통 하위 표현식 스풀을 활용합니다. 작업 테이블 논리적 읽기 수식은 다음과 같습니다.

Worktable Logical Reads = 1 + NumberOfRows * 2 + NumberOfGroups * 4

설명

기존 스풀 테이블과 달리 작업 테이블은 행 읽기당 논리적 읽기 수를 계산하므로 논리적 읽기 수가 부풀려집니다. 이는 작업 테이블이 서버 내부에 있고 해시된 페이지 계산이 분석에 덜 유용하다고 간주되기 때문입니다.

공식은 다음과 같이 분류됩니다.

  1. 1x 논리적 읽기: 작업 테이블이 생성되고 초기화됩니다.
  2. 당 논리적 읽기 2배 행: 기본 스풀은 각 행을 두 번 읽습니다. 한 번은 작업 테이블에 삽입하고 다시 집계를 위해 작업 테이블에서 읽습니다. 보조 스풀도 각 행을 두 번 읽습니다.
  3. 그룹당 4x 논리적 읽기: 기본 스풀은 각 새 파티션의 시작을 나타내는 행을 내보내고 마무리하기 위해 더미 행을 출력합니다. 최종 그룹에 대한 처리입니다. 이러한 추가 행은 4x 개수를 설명합니다.

추가 정보

Paul White는 자신의 블로그 게시물에서 공식이 실행 계획과 일치한다고 설명합니다. 여기서 두 개의 보조 스풀은 두 번 완전히 읽히고 기본 스풀은 (그룹 수 1) 행을 방출합니다. 추가 행은 기본 스풀에서 방출되어 최종 그룹의 끝을 나타냅니다.

결론

작업 테이블 논리 읽기 공식은 부풀려진 논리 읽기를 이해하는 데 유용한 도구입니다. 공통 하위 표현식 스풀이 있는 실행 계획에서 관찰된 읽기 횟수입니다. 작업 테이블에서 논리적 읽기 횟수가 다르게 계산된다는 점을 인식하면 읽기 통계를 해석하고 계획의 효율성을 평가하기가 더 쉬워집니다.

위 내용은 내 창으로 표시된 집계 쿼리에 높은 논리적 읽기가 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.