집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 동시성 매개변수 튜닝 살펴보기
무료 학습 권장사항: mysql 비디오 튜토리얼
Mysql 동시성 매개변수 조정
구현 측면에서 MySQL 서버는 백그라운드 스레드와 고객 서비스 스레드를 포함한 다중 스레드 구조입니다. 멀티스레딩은 서버 리소스를 효과적으로 활용하고 데이터베이스의 동시성 성능을 향상시킬 수 있습니다. Mysql에서 동시 연결 및 스레드를 제어하는 주요 매개 변수에는 max_connections, back_log, thread_cache_size, table_open_cahce가 있습니다.
1. max_connections
max_connections를 사용하여 MySQL 데이터베이스에 허용되는 최대 연결 수를 제어하세요. 기본값은 151입니다. 상태 변수 Connection_errors_max_connections가 0이 아니고 계속 증가한다면 이는 데이터베이스 연결 수가 최대 허용 값에 도달했기 때문에 연결 요청이 계속 실패한다는 의미입니다. 따라서 max_connections 값을 늘리는 것을 고려해 볼 수 있습니다.
참고: 동시 연결 요청 수가 151개를 초과하면 클라이언트의 요청을 처리할 수 있는 연결이 없습니다. 이러한 후속 연결은 대기 상태가 됩니다. MySQL 연결이 해제될 때까지 기다리십시오. 유휴 연결이 없으면 요청 시간이 초과됩니다
Mysql 지원되는 최대 연결 수는 해당 운영 체제 플랫폼의 스레드 라이브러리 품질을 포함한 여러 요인에 따라 달라집니다. 메모리 크기 및 각 연결 로드, CPU 처리 속도, 예상 응답 시간 등 Linux 플랫폼에서는 성능이 좋은 서버가 500~1000개의 연결을 지원하는 것이 어렵지 않습니다. 서버 성능을 기준으로 평가하고 설정해야 합니다.
2.back_log
back_log 매개변수는 MySQL이 TCP 포트를 수신할 때 설정되는 백로그 요청 스택 크기를 제어합니다. MySql 연결 수가 max_connections에 도달하면 특정 연결이 리소스를 해제할 때까지 기다리기 위해 새 요청이 스택에 저장됩니다. 스택 수는 back_log입니다. . 오류가 보고됩니다 . 5.6.6 이전 버전의 기본값은 50이고, 이후 버전의 기본값은 50+(max_connections/5)이지만 최대값은 900을 넘지 않는다.
참고: 클라이언트가 동시에 보낸 동시 요청 수가 151개를 초과하면 후속 요청은 대기 상태가 됩니다. 그러면 대기 중인 연결 수가 back_log에 도달할 수 있습니다. 이러한 새로운 요청은 스택에 저장됩니다. 연결이 해제될 때까지 기다리세요. 스택 수는 back_log를 통해 설정됩니다.
단시간에 많은 수의 연결 요청을 처리하기 위해 데이터베이스가 필요한 경우 back_log 값을 적절하게 늘리는 것을 고려할 수 있습니다.
3.table_open_cache
이 매개변수는 모든 SQL 문 실행 스레드가 열 수 있는 테이블 캐시 수를 제어하는 데 사용됩니다. SQL 문 실행 시 각 SQL 실행 스레드는 최소 1개의 테이블 캐시를 열어야 합니다. 이 매개변수의 값은 설정된 최대 연결 수 max_connections 및 각 연결에 대한 관련 쿼리 실행과 관련된 최대 테이블 수에 따라 설정되어야 합니다. :
max_connections x N
참고: 이는 특정 연결에만 국한되지 않습니다. session , 이는 모든 클라이언트 실행 스레드에 대한 것입니다. 테이블 캐시 수는 각 SQL 문에서 작동하는 테이블 수입니다. 예를 들어 SQL 문은 일반적으로 하나 이상의 테이블을 운영합니다. 하나의 테이블을 운영하면 하나의 테이블 캐시가 발생합니다. 여러 테이블을 운영하면 여러 개의 테이블 캐시가 발생합니다.
mysql> show variables like 'table_open_cache%';+----------------------------+-------+| Variable_name | Value |+----------------------------+-------+| table_open_cache | 431 || table_open_cache_instances | 16 |+----------------------------+-------+2 rows in set (0.06 sec)
4, thread_cache_size
MySQL은 재사용을 위해 특정 개수의 고객 서비스 스레드를 캐시합니다. 매개변수 thread_cache_size를 사용하여 MySQL 캐시 고객 서비스 수를 제어할 수 있습니다. 스레드.
참고: 이는 MySQL 서버에서 스레드 풀을 여는 것과 같습니다. 클라이언트가 요청하면 스레드 풀에서 스레드를 꺼내 작업 처리를 수행합니다.
mysql> show variables like 'thread_cache_size%';+-------------------+-------+| Variable_name | Value |+-------------------+-------+| thread_cache_size | 8 |+-------------------+-------+1 row in set (0.00 sec)
총 8개의 스레드 정보가 캐시됩니다.
5.innodb_lock_wait_timeout
이 매개변수는 InnoDB 트랜잭션이 행 잠금을 기다리는 시간을 설정하는 데 사용됩니다. 기본값은 50ms이며 필요에 따라 동적으로 설정할 수 있습니다. 빠른 피드백이 필요한 비즈니스 시스템의 경우 백그라운드에서 실행되는 일괄 처리 프로그램의 트랜잭션이 장기간 중단되는 것을 방지하기 위해 행 잠금 대기 시간을 더 작게 조정할 수 있습니다. 롤백 작업이 발생했습니다.
참고: 비교적 빠르게 응답하는 비즈니스 시스템에서 행 잠금을 얻지 못한 경우 오류를 직접 보고하면 오랫동안 트랜잭션이 응답할 때까지 기다릴 필요가 없습니다.
기본 시간 초과가 50ms임을 알 수 있습니다
mysql> show variables like 'innodb_lock_wait_timeout%';+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| innodb_lock_wait_timeout | 50 |+--------------------------+-------+1 row in set (0.01 sec)
| 값 |+---------------+---- --+| innodb_lock_wait_timeout | 50 |+---------------+-------+1 행(0.01) 초)
더 많은 관련 무료 학습 권장 사항:mysql 튜토리얼(동영상)
위 내용은 MySQL 동시성 매개변수 튜닝 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!