GreatSQL 통계정보 관련 지식 포인트

관련 지식 포인트:

INNODB_STATS_PERSIST=ON또는 STATS_PERSIST=1단일 테이블을 정의할 때 최적화 프로그램 통계가 디스크에 유지됩니다. 기본적으로 innodb_stats_persistent활성화되어 있습니다.

mysql.innodb_table_stats영구 통계는 및 mysql.innodb_index_stats테이블 에 저장됩니다 .

기본적으로 활성화된 변수는 innodb_stats_auto_recalc테이블 행의 10% 이상이 변경될 때 통계가 자동으로 계산되는지 여부를 제어합니다. 테이블을 생성하거나 변경할 때 절을 지정하여 개별 테이블에 대해 STATS_AUTO_RECALC자동 통계 재계산을 구성할 수 있습니다.

백그라운드에서 발생하는 자동 통계 재계산의 비동기적 특성으로 인해 활성화된 경우에도 innodb_stats_auto_recalc테이블의 10% 이상에 영향을 미치는 DML 작업을 실행한 후에 통계가 즉시 재계산되지 않습니다. 경우에 따라 통계 재계산이 몇 초 정도 지연될 수 있습니다. 최신 통계가 즉시 필요한 경우 ANALYZE TABLE을 실행하여 통계의 동기(포그라운드) 재계산을 시작합니다.

비활성화된 경우 innodb_stats_auto_recalc인덱스 열을 많이 변경한 후 ANALYZE TABLE 문을 실행하여 최적화 프로그램 통계의 정확성을 보장할 수 있습니다.

INNODB_STATS_PERSIST=OFF를 사용하여 단일 테이블을 생성하거나 변경할 STATS_PERSIST=0최적화 도구 통계가 디스크에 유지되지 않습니다 . 대신 통계는 메모리에 저장되며 서버가 종료되면 손실됩니다. 통계는 특정 작업을 통해 특정 조건에서 주기적으로 업데이트됩니다.

기존 테이블에 인덱스를 추가하거나 컬럼을 추가 또는 제거하는 경우에는 값에 관계없이 innodb_stats_auto_recalc인덱스 통계가 계산되어 테이블에 추가됩니다 .innodb_index_stats

통계에 영향을 미치는 5가지 매개변수

  • innodb_stats_persistent: InnoDB 인덱스 통계가 디스크에 유지되는지 여부를 지정합니다. 기본적으로 활성화되어 있습니다.

  • innodb_stats_persistent_sample_pages: 인덱스 열에 대한 카디널리티 및 기타 통계(예: 분석 테이블에서 계산된 통계)를 추정할 때 샘플링할 인덱스 페이지 수입니다. 이 값을 늘리면 인덱스 통계의 정확성이 향상되지만, innodb_stats_persistent_sample_pages값을 높이면 분석 테이블을 실행하는 데 시간이 더 오래 걸릴 수 있습니다.

  • innodb_stats_auto_recalc: 테이블의 데이터가 크게 변경된 후 InnoDB가 자동으로 영구 통계를 다시 계산하도록 합니다. 임계값은 테이블 행 수의 10%이며 기본적으로 켜져 있습니다.

  • innodb_stats_include_delete_marked: InnoDB에 영구 최적화 프로그램 통계를 계산할 때 삭제 표시된 레코드가 포함되어 있는지 여부는 기본적으로 꺼져 있습니다.

  • innodb_stats_transient_sample_pages: 인덱스 열에 대한 카디널리티 및 기타 통계(예: 분석 테이블에서 계산된 통계)를 추정할 때 샘플링할 인덱스 페이지 수입니다. 기본값은 8입니다. 이 값을 늘리면 인덱스 통계의 정확성이 향상되어 쿼리 실행 계획이 향상되지만 InnoDB 테이블을 열거나 통계를 다시 계산할 때 I/O가 증가합니다. 이 매개변수는 테이블에 대해 비활성화된 경우에만 적용되며 innodb_stats_persistent, 활성화된 경우 대신 INNODB_STATS_PERSIST적용됩니다 .INNODB_STATS_PERSIST_SAMPLE_PAGESinnodb_stats_sample_pages

요약하다:

1. 비영구적인 통계 정보는 다음과 같은 상황에서 자동으로 업데이트됩니다.

  1. ANALYZE TABLE 실행
  2. innodb_stats_on_metadata=ON이 경우 SHOW TABLE STATUS, SHOW INDEX를 실행하고 INFORMATION_SCHEMA에서 TABLES 및 STATISTICS를 쿼리합니다.
  3. --auto-rehash 기능이 활성화된 상태에서 mysql 클라이언트를 사용하여 로그인합니다.
  4. 테이블이 처음으로 열렸습니다.
  5. 마지막 통계정보 업데이트 이후 표 1/16의 데이터가 수정되었습니다.

비지속적 통계의 단점은 명백합니다. 데이터베이스가 재시작된 후 많은 수의 테이블이 통계를 업데이트하기 시작하면 인스턴스에 큰 영향을 미치게 되므로 현재는 지속적 통계를 사용하고 있습니다.

2. 지속성 통계는 다음 상황에서 자동으로 업데이트됩니다.

  1. INNODB_STATS_AUTO_RECALC=ON이 경우 테이블의 데이터 중 10%가 수정됩니다.

  2. 새 색인 추가

3. 부정확한 통계정보의 처리

실행 계획을 확인한 결과 올바른 인덱스가 사용되지 않은 것으로 나타났습니다. innodb_index_stats의 통계 정보에 큰 차이가 발생하는 경우 다음과 같은 방법으로 처리할 수 있습니다.

  1. 통계 정보를 수동으로 업데이트하세요. 실행 중에 읽기 잠금이 추가된다는 점에 유의하세요.

ANALYZETABLE TABLE_NAME;

  1. 업데이트 후에도 통계 정보가 부정확한 경우 테이블 샘플링을 위한 데이터 페이지를 추가하는 것을 고려할 수 있습니다. 이를 수정하는 방법에는 두 가지가 있습니다.

​ a. INNODB_STATS_PERSISTENT_SAMPLE_PAGES전역 변수의 기본값은 20입니다.

​ b. 단일 테이블은 테이블의 샘플링을 지정할 수 있습니다.

ALTER TABLE TABLE_NAME STATS_SAMPLE_PAGES=40;

테스트 후 STATS_SAMPLE_PAGES최대값은 65535입니다. 이를 초과하면 오류가 보고됩니다.

​ c. 테이블 통계를 수동으로 업데이트한 innodb_table_stats다음 innodb_index_stats(이 두 테이블을 수정하면 binlog가 생성되지 않음) FLUSH TABLE tbl_name명령문을 사용하여 업데이트된 통계를 로드합니다.


GreatSQL을 즐겨보세요 :)

GreatSQL 소개

GreatSQL은 금융 수준의 애플리케이션에 적합한 국내 독립 오픈소스 데이터베이스로, 고성능, 높은 신뢰성, 높은 사용 편의성, 높은 보안성 등 많은 핵심 기능을 갖추고 있으며 MySQL 또는 Percona Server를 대체하여 사용할 수 있습니다. 온라인 생산 환경에서 사용되며 완전 무료이며 MySQL 또는 Percona Server와 호환됩니다.

관련 링크: GreatSQL 커뮤니티 Gitee GitHub Bilibili

GreatSQL 커뮤니티:

영상

커뮤니티 보상 제안 및 피드백: https://greatsql.cn/thread-54-1-1.html

커뮤니티 블로그 수상작 제출 세부정보: https://greatsql.cn/thread-100-1-1.html

(기사에 대해 궁금한 점이 있거나 남다른 통찰력이 있다면 공식 커뮤니티 홈페이지에 가서 질문하거나 공유해 보세요~)

기술교류그룹:

위챗 & QQ 그룹:

QQ 그룹: 533341697

WeChat 그룹: GreatSQL 커뮤니티 도우미(WeChat ID: wanlidbc)를 친구로 추가하고 커뮤니티 도우미가 귀하를 그룹에 추가할 때까지 기다립니다.

Linus는 커널 개발자가 탭을 공백으로 대체하는 것을 막기 위해 문제를 직접 해결했습니다. 그의 아버지는 코드를 작성할 수 있는 몇 안 되는 리더 중 한 명이고, 둘째 아들은 오픈 소스 기술 부서의 책임자이며, 막내 아들은 핵심입니다. Huawei: 일반적으로 사용되는 모바일 애플리케이션 5,000개를 변환하는 데 1년이 걸렸습니다. Hongmeng으로의 포괄적인 마이그레이션 Java는 타사 취약점에 가장 취약한 언어입니다. Hongmeng의 아버지인 Wang Chenglu: 오픈 소스 Hongmeng은 유일한 아키텍처 혁신입니다. 중국 기초 소프트웨어 분야의 마화텅(Ma Huateng)과 저우홍이(Zhou Hongyi)가 악수를 하며 "원한을 풀다" 전 마이크로소프트 개발자: 윈도우 11 성능은 "터무니없을 정도로 나쁘다" 라오샹지가 오픈소스인 것은 코드는 아니지만 그 이유는 다음과 같다. Google이 대규모 구조 조정을 발표 했습니다 .
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/GreatSQL/blog/11054458