속도를 향상시키기 위해 MySQL 서버에서 메모리 사용량을 늘리는 방법은 무엇입니까?


28

IIS7 및 MySQL을 실행하는 8GB RAM이있는 Windows 2008 서버가 있습니다. 나는 서버에서 메모리, CPU 및 디스크 사용량을 추적하고 있으며 MySQL은 250MB의 RAM 만 사용하고 있음을 알았습니다. 무료 RAM이 많이 있더라도 디스크를 매우 바쁘게 유지합니다.

SQL Server에서 사용하려는 메모리 양을 쉽게 설정할 수 있으며 MySQL에서 동일한 설정을 찾고 있습니다.

더 많은 메모리를 사용하고 CPU 및 디스크 사용량을 줄 이도록 MySQL을 구성하려면 어떻게해야합니까?

답변:


20

table_cache가장 유용한 구성 지시문입니다. MySQL은 테이블에 액세스 할 때마다 테이블을 캐시에로드합니다. 테이블 수가 많으면 캐시하는 것이 더 빠릅니다.

다음을 실행하여 서버 변수를 살펴보십시오.

show status;

변수를 찾으십시오 open_tables. 이것이 table_cache값과 같고 opened_tables계속 올라가면 table_cache구성 파일 의 값 을 늘려야 합니다. 피크 타임 동안 이러한 변수를 실험하여 균형을 찾을 수 있습니다. 사용량이 많은 시간에 opened_tables서버가 오랫동안 가동 된 후에도 적은 양이되도록 구성하려고합니다 .

key_buffer_size실험하기 좋은 변수이기도합니다. 이 변수는 인덱스 버퍼 크기에 영향을 미치며이 변수를 더 크게 만들면 MySQL의 인덱스 처리 속도가 증가합니다. show variables;명령으로 변수를 다시보고 비교할 key_read_requestskey_reads있습니다. 이상적으로는이 두 변수 사이의 비율을 가능한 한 낮추고 싶고을 크기를 늘려서 수행 할 수 있습니다 key_buffer_size. 이 변수를 더 높게 설정하면 디스크에서 직접 읽고 쓰는 횟수가 줄어 듭니다. 이것이 주요 관심사였습니다.


11
실제로 명령은 show status; 상태 변수를 참조하는Open_tablesOpened_tables. table_cache최근 MySQL 버전에서 제거 된 것으로 보입니다.
매트 펜윅

5

my.cnfMySQL이 실행되는 동안 많은 값을 변경할 수 있지만 파일 에서 값을 변경 하고 MySQL을 다시 시작해야합니다 ( 'SET GLOBAL VARIABLE = value ').

당신은 아마 증가보고 싶을 것 key_buffer_size, sort_buffer, read_buffertable_cache우선 아마도 innodb_buffer_pool_size당신이 어떤 InnoDB 테이블이있는 경우. 이러한 값 중 일부는 특히 하드웨어를 고려할 때 먼 길 (2 배까지도)을 늘릴 수 있습니다. MySQL의 기본값은 매우 보수적이며 약 10 년 전에 일반적인 혼합 사용 데스크톱을 목표로 한 것 같습니다. 32 비트 버전은 2GB 이상의 RAM을 사용하는 데 문제가있을 수 있습니다.

에서 봐 매뉴얼 MySQL의 자세한 내용 및 안내.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.