>  기사  >  데이터 베이스  >  MYSQL 학습 요약(6): my.cnf의 각 매개변수 구성 및 상태에 따른 최적화

MYSQL 학습 요약(6): my.cnf의 각 매개변수 구성 및 상태에 따른 최적화

黄舟
黄舟원래의
2016-12-23 17:14:201677검색

#여기에서는 [mysqld] 부분만 언급됩니다
Datadir = /data/mysql //mysql 데이터 디렉터리
Skip-locking //오류 가능성 줄이기
Key_buffer = 384M //인덱스 버퍼 size, 어떻게 설정하는지는 나중에 자세히 다루겠습니다
Max_allowed_packet = 1M //네트워크 전송시 1개의 메시지 전송 최대값
Table_cache = 512 //테이블 버퍼 크기
Sort_buffer_size = 2M // 정렬 쿼리 시 버퍼 크기에 대해서는 뒤에서 자세히 설명합니다
Read_buffer_size=2M//쿼리 연산에서 사용할 수 있는 버퍼 크기
Read_rnd_buffer_size = 8M //랜덤 쿼리에서 사용할 수 있는 메모리 크기 Operations
Myisam_sort_buffer_size=64M //MyISAM 테이블 변경 시 재정렬에 필요한 버퍼링
Thread_cache_size = 8M //트레드 캐시 풀에 캐시할 수 있는 최대 연결 스레드 수를 64 이상의 값으로 설정 메모리 4G 이상
Query_cache_size = 32M //쿼리 버퍼 영역 크기
Thread_concurrency = 8 //논리 서버 수 * 2로 설정
Thread_stack = 256K //MYSQL의 각 스레드 스택 크기. 기본값은 충분히 큽니다. ERROR:1436 스레드 스택 오버런이 발생하면 증가할 수 있습니다. 이 값은
Skip-name-resolve //연결된 시스템의 DNS 해상도를 제거하기 위해 추가하는 것이 가장 좋습니다. ERROR:2013의 발생은 다음으로 인해 발생합니다.
Log-bin=mysql-bin //바이너리 로그 열기
Log-slow-queries = /usr/local/mysql/var/slowquery.log //오픈 시간이 초과된 쿼리와 인덱스가 없는 쿼리를 확인하기 위한 느린 쿼리 로그입니다. 기본 느린 쿼리 시간은 5초이며, 5초를 초과하는 쿼리는 기록됩니다. set long_query_time = 2를 사용하여 느린 쿼리 시간을 설정할 수 있으며, mysqldumpslow를 사용하여 느린 쿼리 로그를 분석할 수도 있습니다. 예를 들어 가장 많이 액세스한 20개의 명령문을 분석하려면 mysqldumpslow –s c –t 20 /usr/local/mysql을 사용합니다. /var /slowquery.log


# MYSQL 상태를 확인하여 각 매개변수의 값을 수정합니다.


#MYSQL 상태를 확인하려면 주로 show 명령어를 사용합니다. 일반적으로 시스템 상태 및 변수 확인 매개변수 값
예: 현재 시스템에 느린 쿼리 로그가 몇 개 있는지 확인
"%slow%"와 같은 전역 상태 표시 //느린 쿼리 수를 얻을 수 있습니다.
현재 느린 쿼리 설정 확인
"%slow%"와 같은 변수 표시; //slow_launch_time을 얻을 수 있습니다.
#max_connections 값을 설정하고 확인
"max_connections"과 같은 변수 표시;
“max_used_connections”와 같은 전역 상태를 표시합니다.
max_used_connections가 max_connections 값에 가까우면 max_connections 값을 늘려야 합니다. max_connections = 256 설정(다시 시작한 후에는 유효하지 않으므로 my.cnf에 작성하는 것이 가장 좋습니다)


# key_buffer_size 값 설정
"key_read%"와 같은 전역 상태 표시 //View key_buffer_size 사용 상황

계산식: Key_reads/ Key_read_requests < 0.1%가 가장 좋지만, Key_reads/ Key_read_requests < 0.01%이면 key_buffer_size가 너무 많이 할당되었음을 의미합니다.


#프로세스 사용량 보기
“Thread%”와 같은 전역 상태 표시;

Threads_created가 너무 크면 MYSQL 서버가 스레드를 생성하고 있다는 의미이며, 현재 조정될 수 있습니다. thread_cache_size의 값입니다.


#쿼리 캐시(qurey_cache_size) 설정 보기
“qcache%”와 같은 전역 상태 표시;

“query_cache%”와 같은 변수 표시

여기에는 쿼리에 대한 세 가지 지표가 있습니다.
쿼리 캐시 조각화 비율 = Qcache_free_blocks/Qcache_total_blocks. 20%를 초과하는 경우 쿼리 캐시 플러시를 사용하여 캐시 조각 모음을 수행할 수 있습니다.
쿼리 캐시 사용률 = (query_cache_size-Qcache_free_memory)/query_cache_size. 25% 미만이면 query_cache_size 설정이 너무 크다는 의미입니다. 80% 이상이고 Qcache_lowmem_prunes>50이면 query_cache_size가 약간 작은 것을 의미합니다.
쿼리 캐시 적중률 = (Qcache_hits-Qcache_inserts)/Qcache_hits, 이는 참고용일 뿐입니다. 너무 작으면 읽기와 쓰기가 자주 발생한다는 의미이며 조각이 있습니다.


#열린 파일 수 보기
“open_files”와 같은 전역 상태 표시;

“open_files_limit”와 같은 변수 표시;

일반적으로 파일 열기 열려 있는 파일 수는 75% 미만이어야 합니다.


요약하면 일반적으로 주의해야 할 사항은 다음 매개변수입니다.
                                                                                                          
max_connections = 256 // 실제 상황에 따라 조정
Thread_cache_size = 64M //메모리가 4G보다 클 경우 64 이상으로 구성
Query_cache_size = 64M
Tmp_table_size = 256M //최대 메모리 임시 테이블 값
Table_cache = 614 //테이블에 할당된 메모리에 액세스하면 IO를 줄일 수 있습니다
Skip-name-resolve //액세스 시간 초과 및 기타 문제를 방지하기 위해 추가됨

위는 MYSQL 학습요약(6)입니다: 상태에 따른 my.cnf 매개변수 구성 및 최적화 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


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