MySQL의 이노 디비 엔진 튜닝

설명 :
  이노 디비 롤백하는 MYSQL 커밋이 제공하고 안전한 트랜잭션 (ACID를 준수) 스토리지 엔진의 충돌 복구 기능합니다. 이노 디비 행 수준 SELECT 문을 잠그고 또한 오라클 스타일의 일관된 비 잠금 읽기를 제공한다. 이러한 기능은 다중 사용자 배포 및 성능을 향상시킬 수 있습니다. 아주 작은 공간 이노 디비 수준 잠금 중국의 은행으로, 이노 디비에 잠겨 확장 할 필요가 없습니다. 이노 디비는 FOREIGN KEY 필수 지원합니다. SQL 쿼리에서 자유롭게 심지어 같은 쿼리도 혼합 할 수 있습니다, 혼합 테이블과 다른 테이블 MYSQL의 이노 디비 유형을 입력 할 수 있습니다.
 이노 디비의 설립자 : 헤이 키 Tuuri
 당신은 저자가 질문에 대한 답변, 버그가 직접 사회라고 할 수가 발생하면 버그 지역 사회의 헤이 키 Tuuri 이노 디비가 매우 활성화되어 있습니다.

: 왜 곡 이노 디비 배울
  현재 : 이노 디비 MYSQL 데이터의 엄청난 금액의 최대 성능을 처리 할 수 있도록 설계된다. 그 CPU 효율은 아마 다른 디스크 기반 관계형 데이터베이스 엔진이 일치 할 수있다. 데이터 또는 응용 프로그램 이노 디비 웹 사이트의 많은 양에 환호된다.
  한편, 복사 작업은 일관성있는 마스터 및 슬레이브 데이터가 어떤 역할을 보장하기 위해 이노 디비 데이터베이스입니다.

요약 튜닝 매개 변수 :
  1. 메모리 사용률이
  2 일 제어
  3. 파일 IO 할당 및 공간
  (4 개) 기타 관련 매개 변수를

1. 메모리 사용률 :
소개하는 이노 디비 가장 중요한 매개 변수 :
innodb_buffer_pool_size
  이 매개 변수와 유사하다 key_buffer_size의 MyISAM,하지만 차이가있다. 버퍼 데이터가 삽입 디비 메인 테이블 데이터 파라미터이 캐시 인덱스. 기본 매개 변수의 최적화를 가속화 이노 디비.
  원리 매개 변수 지정 메모리 :이 매개 변수는 기본적에만 8M에 의해 할당 된, 매우 작은 값으로 말할 수있다. 당신은 전용 DB 서버의 경우, 그는 70 %를 차지하고 있습니다 -80 메모리의 %를. 필요 더 배려를 할당 할 수 있도록이 매개 변수를 동적으로 변경할 수 없습니다. 배포, 너무 큰 너무 많이 점유 스왑 특히 느린 MYSQL 쿼리의 결과. 당신이 매개 변수의 값으로 10 %에 대한 데이터 크기 +를 할당 할 수 있도록 데이터는 상대적으로 작은 경우. 예를 들어 : 데이터 사이즈는 50M, 64M = Innodb_buffer_pool_size에 할당 된 값이다
설정 :

Innodb_buffer_pool_size = 4G
이 사용 파라미터 값에 따라 할당되는 디비 상태 \ G의 도면
----------------------
버퍼 메모리 풀 앤드
---- ------------------
전체 메모리는 4668764894 할당,

확인 사용량에.


둘째 :
Innodb_additional_mem_pool는 :
조치 : 저장하는 데 사용 이노 디비 내부 디렉토리에
이 값이 할당되지 않은 너무 큰, 시스템이 자동으로 조정할 수 있습니다. 수행 너무 높게 설정되지 않았습니다. 데이터의 16M 세트는 테이블이 적절하게 증가시킬 수 많은 경우, 일반적으로 큰 충분하다. 이 값이 자동으로 증가되는 경우, 오류 로그가 표시됩니다.
분배 원리 :
표시 디비 상태 \ G는, DB를의 동작 상태가 무엇인지 (제 BUFFER POOL AND MEMORY 참조)는보고하고 적절한 값으로 조절 될 수있다.
----------------------
BUFFER POOL는 AND 메모리
----------------------
총 메모리 4,668,764,894 할당, 추가 풀 16777216 할당
참조 : 할당 추가 풀 16,777,216에
상황의 매개 변수에 따라 적절하게 조정할 수 있습니다.
설정 방법 :
Innodb_additional_mem_pool = 16M

 

Innodb_additional_pool_size

운영 체제가 합리적으로 메모리를 할당 할 수있을 때이 효과는 적어도 명확하지 않다. 하지만 여전히 20M 또는 작은으로 설정해야 할 수도 있습니다 더 이노 디비를 다른 용도로 할당됩니다 얼마나 많은 메모리를 확인합니다.
 


일 측면에 대해 2.
innodb_log_file_size
역할 : 지정된 날짜 값의 크기
할당 원칙 : 몇 일이 거의 크기와 동일하여 Innodb_buffer_pool_size의 멤버의 값을 추가 할 수 있습니다. 4G. LOG 파일 내에서 일반적으로 2G, 바람직하게 여러 사이즈를 추가하여 제어 매일의 최대 크기에 대한 상한값. 당신은 데이터의 크기에 따라 트랜잭션 크기의 특정 상황에서 볼 필요가있다.
설명 :이 값이 할당 쓰기 속도 및 데이터베이스의 크기, 트랜잭션 크기, 재부팅 후 복구는 좋은 관계를 가지고있다.
설정 방법 :
innodb_log_file_size = 256M


Innodb_log_files_in_group
역할 : 당신은 그룹의 값을 지정하는 데 몇 일이있다.
할당 원칙 : 일반적으로, 우리는 2-3일 설정 값을 사용할 수 있습니다. 기본값은 두 가지입니다.
설정 방법
. innodb_log_files_in_group 3 =


Innodb_log_buffer_size :
역할 : 트랜잭션 버퍼 메모리에.
할당 원칙 : 제어 2-8M 값이 너무 많이. 그의 기억은 일반적으로 한 번에 두 번째 디스크 내부에 기록됩니다. 특정 방법 및 거래에 관한 기록 제출. 오라클과 이것에 대해 다른 데이터베이스에서, 일반적으로 더 적절한 최대 3M로 지정.
참조 : Innodb_os_log_written는 (글로벌 상태를 얻을 수 있습니다 보여)
이 값이 너무 빨리 성장하는 경우, Innodb_log_buffer_size을 증가하는 것이 적절할 수 있습니다
당신은이 매개 변수의 값을 증가 고려할 수 달리 TEXT, 또는 BLOB 필드를 처리해야하는 경우, 또한.
설정 방법 :
innodb_log_buffer_size = 3M

Innodb_flush_logs_at_trx_commit
역할 : 제어 거래를 제출
할당 원칙 :이 매개 변수는 세 개의 값 0,1,2 자신의 허용 수준을 확인하시기 바랍니다. 기본값은 중앙 도서관을 변경하지 마십시오 1입니다.
높은 성능은 0 또는 2로 설정하지만, 두 번째 트랜잭션이 손실 될 수 있습니다.
설명 :
이 설정 매개 변수 그래서 여기에 더 설명하기보다, 이노 디비의 성능에 큰 영향을 미친다.
이 값이 1 인 경우 : 이노 디비 거래 값이 각각 제출 한 후 로그 파일에 기록하고, 날짜 값은 디스크로 않습니다. 이것은 트랜잭션을 잃지 않고 수행 할 수 있습니다.
2의 값 경우 : 각 로그 버퍼에 제출가 아닌 디스크 작동에 로그 파일을 플러시로, 파일에 기록되어, 새로 고침 로그 파일은 한 번에 초당 2의 값의 경우에 발생합니다. 그러나 발생 당 100 % 보장 할 수 없습니다 때문에 그 과정에서 문제를 호출하려면 해당합니다. 그래서 성능이 가장 빠른 것입니다. 그러나 운영 시스템 충돌 또는 전원 실패 트랜잭션의 마지막 순간을 삭제합니다.
이 값이 0 인 경우 : 두 번째 로그 버퍼가 로그 파일에 기록하고 로그 파일의 디스크 작동에 플러시하지만, 트랜잭션에 아무런 조작을 제출하지 않습니다에 한 번. 축소의 mysqld 프로세스가 충돌하기 전에 거래의 마지막 순간을 제거합니다.

이 값이없는 1 위의 분석에서 더 나은 성능을 얻을 수 있지만, 자신의 상황에 따라 측정 할 필요하므로 예외는 손실이 될 것입니다 발생합니다.


설정 방법
. innodb_flush_logs_at_trx_commit 1 =

그는 추가 :

의 MyISAM보다 100 배 느린 이노 디비를 불평? 그럼 당신은 아마이 값을 조정하는 것을 잊었다. 트랜잭션 로그 외부 기본마다이 트랜잭션이 커밋되는 한 수단의 값 또는 명령은 매우 시간이 걸린다 쓰기에 (플러시) 하드 드라이브가 필요합니다. 배터리 백업 캐시 특히 사용 (배터리 캐시 백업)
시간. (2) MyISAM 테이블이 가능 넘겨 특히에서 많이 사용하도록 설정되어, 그것은 하드 드라이브를 의미하지만 시스템 캐시에 기록되지. 로그는 하드 드라이브에 초당 여전히 높이가 될 때, 업데이트 할 수 일반적으로하지 않습니다 잃게보다 1 ~ 2 초 이상 때문에. 0은 조금 더 빠르게로 설정하지만, 보안 MYSQL도 손실 될 수 있습니다 트랜잭션 데이터에 연결되는 경우에도, 오히려 가난한 사람입니다. 2의 값은 전체 운영 체제 수도에만 잃게 데이터를 중단됩니다.
정력 /etc/my.cnf에
= 2에서 innodb_flush_log_at_trx_commit
또한 mysqld를 런타임에 수행 할 수 있습니다 :
GLOBAL 세트에서 innodb_flush_log_at_trx_commit = 2

3. 파일 IO 할당 및 공간
Innodb_file_per_table
효과 : 각 이노 디비 테이블은 자신의 별도의 테이블 공간을 가지고있다. 이러한 공간의 일부를 복구 할 수있는 파일을 삭제하는 등.
분배 원칙 :에만 사용하지 사용합니다. DB는뿐만 아니라 공통 테이블 공간이 필요합니다.
설정 방법
. innodb_file_per_table 1 =

Innodb_file_io_threads의
조치가 : 파일을 읽고 IO의 수를 쓰기이 매개 변수는 Windows에서 작동합니다. 도 4는 리눅스에서 동일 할 것이다
설정 방법
innodb_file_io_threads = 4

Innodb_open_files의
역할 : 이노 디비 열 수있는 데이터 테이블을 제한.
분배 원칙 : 라이브러리 테이블의 경우 특히 많은 수의이 증가합니다. 기본값은 300입니다.
설정 방법 :
innodb_open_files = 800
하십시오 적절한 증가 table_Cache


4. 기타 관련 매개 변수는
여기에 설명 된 더 중요한 매개 변수입니다 :
innodb_flush_method를
역할 : 모델 이노 디비 IO 시스템 및 처리
분배의 원칙 : 윈도우 설정되지는.
유닉스를 설정할 수 있습니다 fsync를 () 또는 O_SYNC / O_DSYNC를
캐시 시스템은 그에게 그것을 금지 할 수있는 시스템이 금지합니다.
리눅스를 선택할 수 있습니다 : O_DIRECT
디스크에 직접 기록을 시스템 캐시를 금지

그는 추가 :

InnoDB의 IO 동기 방법을 설정 :
1) 기본? 사용 된 fsync ().
일반적으로 느린 동기화 모드 2) O_SYNC 열려있는 파일.
리눅스에 직접 IO를 사용하여 3) O_DIRECT. 크게 특히, 속도를 향상시킬 수 있습니다
RAID 시스템에. 추가 데이터 복제 및 더블 버퍼링 (MySQL의 버퍼링을 피
그리고 OS)를 버퍼링


설정 방법 :
innodb_flush_method를는 O_DIRECT를 =

Innodb_max_dirty_pages_pct
역할 : 1 ~ 100의 범위에서 백분율 값 아래의 버퍼 제어 이노 디비 더러운 페이지, 기본값은 90이며
이 매개 변수의 또 다른 용도 : 이노 디비 메모리 할당, 심각한 스왑 직업의 수 결과가 너무 큰 경우 즉 릴리스 스왑 공간을 달성 할 수 있도록이 값을 적절하게 조정 감소한다. 의미의 건축 : 90 %의 최대 값이 15 % 이상. 너무, 필요가 작업을 업데이트하는 것은 너무 느립니다, 데이터 페이지를 넣어 너무 작아, 각 페이지에 의한 변화 너무 많은 데이터, 너무 작은 캐시를 업데이트합니다.
설정 방법 :
Innodb_max_dirty_pages_pct = 90 명
동적으로 변경 슈퍼 권한이 필요합니다
SET 글로벌 Innodb_max_dirty_pages_pct = 50;

참조 : https://imysql.com/node/609

        https://www.cnblogs.com/steven9898/p/11340764.html

    

추천

출처www.cnblogs.com/VicLiu/p/11810125.html