• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 1. 최적화 개요
    2. SQL문 최적화
    3. 최적화 및 인덱스
    4. 데이터베이스 구조의 최적화
    5. InnoDB 테이블의 최적화
    6. MyISAM 테이블의 최적화
    1. MyISAM 쿼리 최적화
    2. MyISAM 테이블의 대량 데이터로드
    3. REPAIR TABLE 문 속도
    7. MEMORY 테이블 최적화
    8. 쿼리 실행 계획의 이해
    9. 버퍼링과 캐시
    10. 잠금 작업의 최적화
    11. MySQL 서버의 최적화
    12. 성능 측정
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

8.6.3 REPAIR TABLE 문 속도

MyISAM 테이블 REPAIR TABLE 은 복구 작업에 myisamchk를 사용하는 것과 유사하며 동일한 성능 최적화의 일부가 적용됩니다.

  • myisamchk는 메모리 할당을 제어하는 변수가 있습니다. 섹션 4.6.3.6 "myisamchk 메모리 사용량" 에 설명 된대로 이러한 변수를 설정하고 성능을 향상시킬 수 있습니다.

  • REPAIR TABLE 에서는 같은 원칙이 적용되지만, 복구는 서버에서 실행되기 때문에 myisamchk 변수 대신에 서버 시스템 변수를 설정합니다. 또한 메모리 할당 변수의 설정 이외에 myisam_max_sort_file_size 시스템 변수를 늘리면 복구에 빠른 filesort 방법이 사용되어 키 캐시 방법으로 느린 복구를 피할 수있을 가능성이 높습니다. 테이블 파일의 복사본을 저장할 수있는 충분한 공간이 있는지 확인되면 시스템의 최대 파일 크기에 변수를 설정합니다. 원래 테이블 파일을 저장하고있는 파일 시스템에서 공간이 사용 가능해야합니다.

다음 옵션을 사용하여 그 메모리 할당 변수를 설정하여 myisamchk 테이블 복구 작업이 실행되었다고합니다.

 --key_buffer_size = 128M --myisam_sort_buffer_size = 256M
 --read_buffer_size = 64M --write_buffer_size = 64M

그 myisamchk 변수의 일부는 서버 시스템 변수에 해당합니다.

myisamchk 변수 시스템 변수
key_buffer_size key_buffer_size
myisam_sort_buffer_size myisam_sort_buffer_size
read_buffer_size read_buffer_size
write_buffer_size none

각 서버 시스템 변수는 실행시에 설정할 수 있고, 그들 중 일부 ( myisam_sort_buffer_size , read_buffer_size )는 글로벌 값 이외에 세션 값도 있습니다. 세션 값을 설정하여 현재 세션의 변경의 영향을 제한하고 다른 사용자에게 영향을주지 않습니다. 글로벌만을 변수 ( key_buffer_size , myisam_max_sort_file_size )을 변경하면 다른 사용자에게 영향을줍니다. key_buffer_size 의 경우 버퍼가 그들과 공유하는 것을 고려하고 있어야합니다. 예를 들어, myisamchk key_buffer_size 변수를 128M 바이트로 설정 한 경우 해당 key_buffer_size 시스템 변수를 더 크게 설정 (그것이 이미 크게 설정되어 있지 않은 경우) 다른 세션의 활동에 의한 키 버퍼의 사용을 허용 할 수 있습니다 . 그러나 글로벌 키 버퍼 크기를 변경하면 버퍼가 해제되고, 디스크 I / O가 증가하여 다른 세션이 느려집니다. 이 문제를 해결하는 대안은 개별 키 캐시를 사용하여 그것을 복구 할 테이블의 인덱스에 할당 복구가 완료되면 그 지정을 해제하는 것입니다. 섹션 8.9.2.2 "복합 키 캐시" 를 참조하십시오.

앞서의 설명에 따라 REPAIR TABLE 작업은 다음과 같이 실행하여 myisamchk 명령어와 유사한 설정을 사용할 수 있습니다. 여기에서는 개별 128M 바이트의 키 버퍼를 할당하고 파일 시스템은 100G 바이트 이상의 파일 크기를 허용하는 것으로합니다.

 SET SESSION myisam_sort_buffer_size = 256 * 1024 * 1024;
 SET SESSION read_buffer_size = 64 * 1024 * 1024;
 SET GLOBAL myisam_max_sort_file_size = 100 * 1024 * 1024 * 1024;
 SET GLOBAL repair_cache.key_buffer_size = 128 * 1024 * 1024;
 CACHE INDEX tbl_name IN repair_cache;
 LOAD INDEX INTO CACHE tbl_name ;
 REPAIR TABLE tbl_name ;
 SET GLOBAL repair_cache.key_buffer_size = 0;

글로벌 변수를 변경할 수 있지만 다른 사용자에 미치는 영향을 최소화하기 위해 REPAIR TABLE 조작 동안에 만 실행하도록하고 싶다면, 그 값을 사용자 변수에 저장하고 나중에 복원합니다 . 예 :

 SET @old_myisam_sort_buffer_size = @@ global.myisam_max_sort_file_size;
 SET GLOBAL myisam_max_sort_file_size = 100 * 1024 * 1024 * 1024;
 REPAIR TABLE tbl_name;
 SET GLOBAL myisam_max_sort_file_size = @old_myisam_max_sort_file_size;

REPAIR TABLE 에 영향을 미치는 시스템 변수는 변수의 기본값을 사용하려면 서버 시작시 전역으로 설정할 수 있습니다. 예를 들어, 다음 줄을 서버의 my.cnf 파일에 추가합니다.

 [mysqld]
 myisam_sort_buffer_size = 256M
 key_buffer_size = 1G
 myisam_max_sort_file_size = 100G

이러한 설정은 read_buffer_size 은 포함되지 않습니다. read_buffer_size 을 세계적으로 큰 값으로 설정하면 모든 세션에 대해 그것이 실행되고 많은 동시 세션이 서버에 과도한 메모리가 할당되기 때문에 성능이 저하 될 수 있습니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved