이 답변을 아래의 Rolando 답변에 대한 보완 정보로 제공하고 있습니다.
서버가 생산되기 전에
MySQL에서 가장 자주 사용하는 가장 큰 테이블을 기반으로 innodb_buffer_pool_size를 계산하십시오. 데이터베이스에서 크기에 따라 가장 큰 테이블을 식별하기 위해이 스크립트를 사용할 수 있습니다.
select table_schema, table_name, round(data_length/1024/1024,2) as size_mb
from information_schema.tables where table_schema like 'my_database'
order by size_mb desc;
+--------------+-------------------------+---------+
| table_schema | table_name | size_mb |
+--------------+-------------------------+---------+
| heavybidder | user | 522.55|
| heavybidder | bid | 121.52|
| heavybidder | item_for_sale | 10.52|
| heavybidder | account_user | 5.02 |
| heavybidder | txn_log | 4.02 |
| heavybidder | category | 0.02 |
+--------------+-------------------------+---------+
데이터베이스에서 가장 큰 테이블을 알았으므로 가장 자주 사용되는 테이블을 결정해야합니다. 이를 위해 Jet Profiler (JP)와 같은 프로파일 링 프로그램을 사용하여 가장 많이 액세스되는 테이블을 확인합니다. JP는 가장 자주 액세스하는 테이블을 보여줍니다. 다음은 JP에서 해당 섹션의 스크린 샷입니다.
따라서이를 염두에두고 사용자 및 입찰 테이블은 약 640MB의 디스크 공간을 차지한다는 점을 알고 있습니다 .JP에 따라 매우 자주 사용되므로 MySQL은 인덱스와 데이터를 Rolando와 같은 버퍼 풀에 저장합니다. 그의 의견에 아래 언급.
MySQL에 가장 크고 가장 많이 사용되는 테이블에 대한 데이터를 저장하기에 충분한 메모리가 있는지 확인하기 위해 640MB에서 innodb_buffer_pool_size를 정의합니다.
몇 가지 추가 고려 사항이 있지만 innodb_buffer_pool_size에는 적용되지 않습니다.
이것이 32 비트 또는 64 비트 시스템입니까? 32 비트 시스템에서 PAE를 활성화하지 않으면 4GB로 제한됩니다. Windows에서 이는 Windows Enterprise 또는 Datacenter 에디션을 실행하는 것을 의미합니다.
시스템에서 실행중인 다른 프로세스에 얼마나 많은 메모리가 필요합니까? 전용 MySQL 서버에서는 OS에 대해 5 %에서 10 % 사이를 유지합니다. Windows에서는 프로세스 탐색기를 사용하여 메모리 사용량을 분석 할 수 있습니다. Linux에는 sysstat, free, htop, top 및 vmstat가 있습니다.
데이터베이스는 Innodb 테이블로만 구성되거나 Innodb와 MyISAM이 혼합되어 있습니까? 이 둘이 혼합 된 경우 key_cache, 조인 변수, 쿼리 캐시 등의 메모리를 따로 보관 해 두겠습니다. 나중에 서버가 프로덕션 환경에 있으면 MyISAM 적중률을 계산할 수 있습니다.
서버가 생산 된 후
Innodb의 현재 적중률은 얼마입니까?
1-(innodb_buffer_pool_reads / innodb_buffer_pool_read_requests).
키 캐시 적중률은 무엇입니까
1-(키 읽기 / 키 읽기 요청)
나는 일반적으로 가능한 한 100 %에 가까운 비율을 얻으려고 노력합니다.
테이블이 버퍼 풀에 얼마나 잘 맞습니까?
또한이 링크를 참조하여 테이블 데이터가 buffer_pool에 얼마나 잘 맞는지 확인할 수 있습니다.이 링크를 통해 "주어진 테이블에 대한 버퍼 풀에있는 페이지 수 (cnt), 더러워진 페이지 수 (더러운 수)"를 표시 할 수 있습니다. , 메모리에 맞는 인덱스 비율은 얼마입니까 (fit_pct). " Percona 서버에만 적용
http://www.mysqlperformanceblog.com/2010/12/09/how-well-does-your-table-fits-in-innodb-buffer-pool/