CPU 집약적이 MySQL에서 DB 연결 (웹 앱용)을 열고 닫는 방법
- ... DB 소프트웨어가 localhost에있을 때?
- ... DB 소프트웨어가 다른 머신에있을 때?
CPU 집약적이 MySQL에서 DB 연결 (웹 앱용)을 열고 닫는 방법
답변:
DB 연결 당 할당되는 메모리의 양을 고려하십시오. 어떤 것들을 할당해야합니까? 357 페이지 MySQL 5.0 인증 연구 가이드 에 따르면 :
서버는 각 클라이언트 연결에 대해 여러 버퍼를 유지 관리합니다. 하나는 클라이언트와 정보를 교환하기위한 통신 버퍼로 사용됩니다. 테이블을 읽고 결합 및 정렬 조작을 수행하기 위해 클라이언트마다 다른 버퍼가 유지 보수됩니다.
연결 별 버퍼를 제어하는 설정은 무엇입니까?
연결이 이루어질 때 이러한 버퍼를 할당하고 할당 해제하는 데 시간이 걸립니다. max_connections 으로 해당 값의 합계를 곱하는 것을 잊지 마십시오 . 참고로, mysql_pconnect 를 사용 하지 마십시오. PHP와 MySQL의 지속적인 연결이 제대로 이루어지지 않습니다. 이 주제에 대한 두 가지 정보 링크는 다음과 같습니다.
OLTP와 같은 대량 읽기, 대량 쓰기 환경에서는 RAM 사용량 및 OS 스왑으로 인한 억제 가능성 측면에서 비용이 많이 듭니다. 쓰기가 적고 읽기가 적은 웹 사이트에서는 크게 걱정하지 않습니다.
MySQL은 스레드 캐시 (thread_cache_size)를 사용하여 연결 (또는 스레드)을 캐시합니다. 최대 값은 100입니다. 클라이언트가 연결을 닫으면 캐시로 리턴됩니다. 새 연결이 열리면 스레드 캐시를 확인합니다. 사용량이 많은 시스템에서 연결을 열면 특히 쿼리를 오래 실행하는 경우 연결을 여는 데 많은 비용이들 수 있습니다.
https://dev.mysql.com/doc/refman/5.6/en/connection-threads.html Mysql Enterprise를 구매할 수있는 경우 Mysql 5.6에서 구현 된 Thread Pool 플러그인을 사용할 수 있습니다.