MySQL 의 기수 통 계 를 분석 하 다.

2883 단어 MySQL기수통계
1.기수 가 무엇 입 니까?
Cardinality 는 MySQL 표 의 한 열의 다른 값 의 수 를 가리킨다.
만약 이 종류 가 유일한 색인 이 라면,기수=줄 수.
만약 이 열 이 sex 라면,매 거 진 유형 은 남녀 뿐 이 며,그것 은 기수 가 2 이다.
Cardinality 가 높 을 수록 열 은 색인 이 될 가치 가 있다.MySQL 실행 계획 도 Cardinality 를 기반 으로 색인 을 선택 합 니 다.
아래 의 방식 을 통 해 표 의 각 열의 기 수 를 볼 수 있다.

예 를 들 어 이 전형 적 인 예:
한 열 은 sex 인 데,그것 은 sex 열 에 저 장 된 값 에 있어 서 남자 가 아니면 여자 이 며,그 기수 가 가장 큰 것 은 2 이다.
그것 도 섹스 를 위 한 색인 을 만 들 필요 가 전혀 없다.섹스 기반 검색 속 도 를 높이 기 위해 MySQL 은 선택 한 이 새 색인 에 새로운 B+Tree 를 만 들 것 입 니 다.그러나 당신 의 sex 는 두 가지 값 만 있 습 니 다.MySQL 에 있어 서 지정 한 열 에 B+Tree 색인 을 만 들 었 더 라 도 실제 검색 을 실행 할 때 최대 2 분 검색 을 할 수 있 습 니 다.나머지 작업 은 옮 겨 다 닐 수 밖 에 없 기 때문에 sex 에 색인 을 만 드 는 것 은 의미 가 크 지 않 습 니 다.
2.InnoDB 가 기 수 를 업데이트 할 시기?
인자:innodbstats_auto_recalc 는 MySQL 이 이러한 지속 적 인 정 보 를 주동 적 으로 다시 계산 하 는 지 여 부 를 제어 합 니 다.기본 값 은 1 은 true,0 은 false 입 니 다.
기본 적 인 상황 에서 표 의 줄 변화 가 10%를 넘 으 면 기수 정 보 를 다시 계산한다.
3.기 수 는 추산 한 것 이다.
기 수 는 실시 간 으로 업데이트 되 지 않 습 니 다!그리고 샘플링 을 통 해 계 산 된 값 입 니 다!
기수 의 공식 이 어떤 지 는 중요 하지 않 을 것 이다.
중요 한 것 은 그 가 무 작위 샘플링 데이터 페이지 를 통 해 통 계 된 추산 치 라 는 것 을 알 아야 한 다 는 것 이다.
또한 무 작위 샘플링 페이지 수 는 인자 innodb 를 통 해stats_persistent_sample_pages 설정,기본 값 은 20 입 니 다.
이것 은 기수 치가 정확 하지 않다 는 것 을 의미 하 며,심지 어 는 네가 매번 계산 한 결과 가 서로 어 울 릴 때마다 매우 크다 는 것 을 의미한다.
4.지구 화 기수
인자 innodb 를 통 해stats_persistent 는 기본 값 을 영구적 으로 유지 할 지 여 부 를 제어 합 니 다.기본 값 은 off 입 니 다.
물론 단독 시 계 를 위해 STATS 를 설정 할 수 있 습 니 다.PERSISTENT=1 그럼 그의 innodbstats_persistent 가 자동 으로 사 용 됩 니 다.
MySQL 을 다시 시작 하면 이 값 을 다시 계산 하지 않 고 다시 시작 속 도 를 빠르게 할 수 있 습 니 다.
5.어떻게 주동 적 으로 기 수 를 갱신 합 니까?
다음 SQL 을 실행 할 때 InnoDB 업데이트 기 수 를 터치 합 니 다.
그래서 가능 한 한 업무 저 봉 기 를 선택 하 세 요.
analyze table tableName;

만약 샘플링 의 수량 이 너무 적기 때문에 계 산 된 기수 가 틀 렸 다 는 것 은 터무니없다.그것 은 MySQL 의 최적화 기 가 색인 을 잘못 선택 할 수 있 습 니 다.이것 은 네가 이 값 을 적당히 늘 릴 수 있 는 것 이다.하지만 너무 많이 늘 어 나 면 ANALYZE TABLE 의 운행 이 느 려 질 수 있다.
반면 ANALYZE TABLE 은 운행 이 너무 느리다.매개 변수 innodb 를 적당 하 게 조정 할 수 있 습 니 다.stats_persistent_sample_페이지 의 값.그러나 이 는 기수 계산 이 부정 확 할 수도 있다.
둘 의 관 계 를 균형 시 킬 방법 이 없다 면표 에 있 는 색인 열의 수량 을 줄 이거 나 파 티 션 의 수량 을 제한 하여 ANALYZE TABLE 의 복잡성 을 낮 출 수 있 습 니 다.표 의 메 인 키 의 열 수도 매우 중요 합 니 다.메 인 키 열 은 모든 유일한 색인 에 추가 되 기 때 문 입 니 다.
참고:
https://dev.mysql.com/doc/refman/5.7/en/innodb-persistent-stats.html
https://dev.mysql.com/doc/refman/5.7/en/innodb-analyze-table-complexity.html
이상 은 MySQL 의 기수 통 계 를 분석 하 는 상세 한 내용 입 니 다.MySQL 기수 통계 에 관 한 자 료 는 다른 관련 글 을 주목 하 세 요!

좋은 웹페이지 즐겨찾기