>운영 및 유지보수 >리눅스 운영 및 유지 관리 >Linux에서 MySQL을 최적화하는 방법에 대한 자세한 소개

Linux에서 MySQL을 최적화하는 방법에 대한 자세한 소개

黄舟
黄舟원래의
2017-06-04 11:26:421752검색

이 글에서는 주로 LinuxMySQL 최적화 예제에 대한 자세한 설명을 소개하고 있습니다. 필요한 친구는

Linux

vim의 MySQL 최적화 예제에 대한 자세한 설명을 참고하세요. /etc/my.cnf 다음은 my.cnf 파일에 있는 [mysqld] 문단의 내용만 나열한다. 다른 문단의 내용은 MySQL 실행 성능에 거의 영향을 주지 않으므로 지금은 무시한다.

[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking

MySQL의 외부 잠금을 방지하고 오류 가능성을 줄이고 안정성을 높입니다.

skip-name-resolve

MySQL이 외부 연결에서 DNS 확인을 수행하지 못하도록 비활성화합니다. 이 옵션을 사용하면 MySQL이 DNS 확인에 소비하는 시간을 없앨 수 있습니다. 그러나 이 옵션이 켜져 있으면 모든 원격 호스트 연결 인증은 IP 주소를 사용해야 하며, 그렇지 않으면 MySQL이 연결 요청을 정상적으로 처리할 수 없다는 점에 유의해야 합니다!

back_log = 384

back_log 매개변수의 값은 MySQL이 일시적으로 새 요청에 대한 응답을 중단하기 전에 짧은 시간 동안 스택에 저장할 수 있는 요청 수를 나타냅니다. 시스템에 짧은 시간 동안 많은 연결이 있는 경우 들어오는 TCP/IP 연결에 대한 수신 대기열 의 크기를 지정하는 이 매개변수의 값을 늘려야 합니다. 운영 체제마다 이 대기열 크기에 대한 제한이 있습니다. back_log를 운영 체제 제한보다 높게 설정하려고 해도 아무런 효과가 없습니다. 기본값은 50입니다. Linux 시스템의 경우 512 미만의 정수로 설정하는 것이 좋습니다.

key_buffer_size = 256M

key_buffer_size는

인덱싱에 사용되는 버퍼 크기를 지정하며 더 나은 인덱스 처리 성능을 위해 버퍼 크기를 늘립니다. 메모리가 약 4GB인 서버의 경우 이 매개변수를 256M 또는 384M으로 설정할 수 있습니다. 참고: 이 매개변수 값을 너무 크게 설정하면 서버의 전반적인 효율성이 저하됩니다!

max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M

Query정렬 시 사용할 수 있는 버퍼 크기입니다. 참고: 이 매개변수에 해당하는 할당된 메모리는 각 연결에 배타적입니다. 연결이 100개인 경우 할당된 총 정렬 버퍼 크기는 100 × 6 = 600MB입니다. 따라서 메모리가 4GB 정도 되는 서버의 경우 6~8M으로 설정하는 것이 좋습니다.

read_buffer_size = 4M

읽기 쿼리 작업에 사용할 수 있는 버퍼 크기입니다. sort_buffer_size와 마찬가지로 이 매개변수에 해당하는 할당된 메모리도 각 연결에 대해 배타적입니다.

join_buffer_size = 8M

조인트 쿼리 작업에 사용할 수 있는 버퍼 크기입니다. sort_buffer_size와 마찬가지로 이 매개변수에 해당하는 할당 메모리도 각 연결마다 배타적입니다.

myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M

MySQL 쿼리 버퍼의 크기를 지정하세요. MySQL 콘솔에서 볼 수 있듯이, Qcache_lowmem_prunes 값이 너무 크다면 버퍼링이 부족한 경우가 많다는 뜻입니다. 값이 작으면 효율성에 영향을 미칩니다. 그런 다음 Qcache_free_blocks를 쿼리하지 않는 것을 고려할 수 있습니다. 값이 매우 크면 버퍼에 조각이 많다는 의미입니다.

tmp_table_size = 256M
max_connections = 768

MySQL에서 허용하는 최대 연결 프로세스 수를 지정하세요. 포럼에 액세스할 때 Too ManyConnections 오류 메시지가 자주 나타나는 경우 이 매개변수의 값을 늘려야 합니다.

max_connect_errors = 10000000
wait_timeout = 10

요청에 대한 최대 연결 시간을 지정하세요. 메모리가 약 4GB인 서버의 경우 5~10으로 설정할 수 있습니다.

thread_concurrency = 8

이 매개변수의 값은 서버 논리 CPU 수*2입니다. 이 예에서 서버에는 2개의 물리적 CPU가 있고 각 물리적 CPU는 H.T 하이퍼스레딩을 지원하므로 실제 값은 4*2=8

입니다.

skip-networking

이 옵션을 활성화하면 MySQL의 TCP/IP 연결 방법이 완전히 꺼질 수 있습니다. 웹 서버가 원격 연결을 통해

MySQL 데이터베이스서버에 액세스하는 경우 이 옵션을 활성화하지 마세요! 그렇지 않으면 정상적인 연결이 불가능합니다!

table_cache=1024

물리적 메모리가 클수록 설정도 커집니다. 기본값은 2402이며, 가장 적합하도록 512-1024로 조정하세요.

innodb_additional_mem_pool_size=4M

기본값은 2M입니다.

innodb_flush_log_at_trx_commit=1

0으로 설정하면 저장하기 전에 innodb_log_buffer_size 대기열이 가득 찰 때까지 기다립니다. 기본값은 1

innodb_log_buffer_size=2M

기본값은 1M

innodb_thread_concurrency=8

서버의 CPU 수로 설정합니다. 기본값인 8

key_buffer_size=256M
#默认为218,调到128最佳
tmp_table_size=64M         
#默认为16M,调到64-256最挂
read_buffer_size=4M        
#默认为64K
read_rnd_buffer_size=16M    
#默认为256K
sort_buffer_size=32M       
#默认为256K
thread_cache_size=120     
#默认为60
query_cache_size=32M

을 사용하는 것이 좋습니다.

많은 상황에서 상세한 분석이 필요합니다


Key_reads가 너무 크면 my.cnf에서 Key_buffer_size를 늘리고 Key_reads/Key_read_requests를 1/100 이상으로 유지해야 합니다.


2. Qcache_lowmem_prunes가 매우 큰 경우 Query_cache_size 값을 늘려야 합니다.

위 내용은 Linux에서 MySQL을 최적화하는 방법에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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