[MySQL] checking permissions

checking permissions이란
Checking permissions 상태에서 멈춘 MySQL 연결은 보통 MySQL 서버에서 사용 권한을 검사하는 동안 발생하며,
대개 네트워크 또는 디스크 I/O 문제로 인해 발생한다고 한다.
MySQL
-설정: my.cnf
-접속: mysql -u root -p
USE `DB명`;
SHOW CREATE TABLE `테이블명`; -- 테이블 정보
해결방법
MySQL 버전 업그레이드
(현재 버전: 5.1.54 > 5.2 이상)
: MySQL 버전이 오래되면 checking permissions 상태에서 자주 멈추는 경우가 있으므로 최신 버전으로 업그레이드하는 것이 좋음.
MySQL 5.1.54버전에서는 해당 상태가 오래걸리는 것이 일반적인 현상이며, 인증 및 권한 부여 시스템이 개선되어있지 않기 때문에 더 많이 멈추게 됨.
**5.1버전 이후로는 인증 및 권한 부여 시스템이 개선되어 클라이언트 연결 처리 속도가 향상 되었다고 합니다.
MySQL 설정 변경
MySQL 설정 변경하여 checking permission 상태에서 멈추는 연결 최소화
-max_connections : MySQL 서버가 처리할 수 있는 최대 연결 수 설정. 이 값을 높이면 동시에 처리할 수 있는 연결 수가 늘어남.
-max_user_connections : 사용자당 최대 연결 수를 설정. 이 값을 높이면 사용자가 동시에 처리할 수 있는 연결 수가 늘어남.
-skip-name-resolve : DNS 조회 생략. DNS 조회가 느린 경우 MySQL 서버의 응답 시간이 늦어질 수 있음.
-wait_timeout : MySQL 클라이언트가 대기하는 시간 설정. 이 값이 너무 작으면 "checking permissions" 상태에서 멈추는 경우가 발생할 수 있음.
`skip-name-resolve` 설정 변경
- 기본값: `#skip-name-resolve`
- 변경 후: `skip-name-resolve`
`max_connections` 설정 변경
- 기본값: `151`
- 변경 후: 적절한 값 (예: 500)
`table_open_cache` 설정 변경
- 기본값: `64`
- 변경 후: 적절한 값 (예: 1000)
인덱스 최적화
checking permissions이 발생한 테이블에서 인덱스 최적화를 한다.
MySQL 서버 하드웨어 업그레이드
-MySQL 서버가 너무많은 연결을 처리하거나 I/O 부하가 많은 경우, 서버 하드웨어를 업그레이드 하여 MySQL 서버의 처리 성능을 높일 수 있음
SHOW STATUS LIKE 'Threads_connected'; -- 현재 MySQL 서버에 연결된 클라이언트 스레드수
SHOW STATUS LIKE 'Queries'; -- MySQL 서버 시작 이후 수행된 총 쿼리 수