1. MyISAM 메모리 최적화
MyISAM 스토리지 엔진은 key_buffer를 사용하여 인덱스 모듈을 캐시하여 인덱스 읽기 및 쓰기 속도를 높입니다. MyISAM 테이블의 데이터 블록의 경우 mysql에는 특별한 캐싱 메커니즘이 없으며 운영 체제의 IO 캐시에 전적으로 의존합니다.
1. key_buffer_size 설정
key_buffer_size는 MyISAM 인덱스 블록 캐시 파티션의 크기를 결정합니다. MyISAM 테이블의 액세스 효율성에 직접적인 영향을 미칩니다. 일반적인 MyISAM 데이터베이스의 경우 사용 가능한 메모리의 1/4을 key_buffer_size에 할당하는 것이 좋습니다:
key_buffer_size=2G
2. 읽기_버퍼_크기
MyISAM 테이블을 순차적으로 자주 스캔해야 하는 경우 read_buffer_size 값을 늘려 성능을 향상시킬 수 있습니다. 하지만 read_buffer_size는 각 세션마다 배타적이라는 점에 유의해야 합니다. 기본값을 너무 크게 설정하면 메모리 낭비가 발생합니다.
3. read_rnd_buffer_size
order by 절이 있는 SQL과 같이 정렬이 필요한 MyISAM 테이블 쿼리의 경우 read_rnd_buffer_size 값을 적절하게 늘리면 해당 SQL의 성능이 향상될 수 있습니다. 하지만 read_rnd_buffer_size는 배타적이라는 점에 유의해야 합니다. 기본 설정 값이 너무 크면 메모리 낭비가 발생합니다.
2. InnoDB 메모리 최적화
InnoDB는 메모리 영역을 I/O 캐시 풀로 사용합니다. 이 캐시 풀은 InnoDB 인덱스 블록을 캐시하는 데뿐만 아니라 InnoDB 데이터 블록을 캐시하는 데도 사용됩니다.
1. Innodb_buffer_pool_size 설정
변경량에 따라 InnoDB 스토리지 엔진 테이블 데이터 및 인덱스 데이터의 최대 캐시 크기가 결정됩니다.
2. innodb_log_buffer_size
InnoDB가 트랜잭션이 커밋되기 전에 디스크에 불필요한 로그 쓰기 작업을 수행하는 것을 방지할 수 있는 InnoDB 리두 로그 캐시의 크기를 결정합니다.
3. 동시성과 관련된 MySQL 매개변수 조정
1. max_connections 조정
동시 연결 개선
2. thread_cache_size 조정
데이터베이스 연결 속도를 높이기 위해 MySQL은 재사용을 위해 특정 수의 고객 서비스 스레드를 캐시합니다. mysql 캐시 클라이언트 스레드 수는 thread_cache_size 매개변수를 통해 제어할 수 있습니다.
3. innodb_lock_wait_timeout
InnoDB 트랜잭션이 행 잠금을 기다리는 시간을 제어합니다. 빠르게 처리되는 SQL 문을 위해 행 잠금 대기 시간 초과를 늘려 대규모 롤백 작업을 방지할 수 있습니다.
참고: 위의 내용은 모두 MySQL 디렉터리의 my.ini 파일에 다시 작성되었습니다.
위 내용은 MySQL Advanced 16 - Memory Optimization의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!