본문 바로가기

Database/MySQL

MySQL 성능 향상을 위한 Parameter

이러한 파라미터 설정은 각각의 시나리오 및 요구 사항에 따라 다를 수 있으며, 변경 전에 백업을 만들고 테스트하는 것이 중요합니다. MySQL의 문서와 모니터링 도구를 통해 실시간으로 성능을 모니터링하면서 조정하는 것이 좋습니다.

MySQL의 성능을 향상하기 위해서는 여러 가지 파라미터를 조정하고 최적화하는 것이 중요합니다. 아래는 MySQL의 주요 파라미터와 각각의 간단한 설명 및 설정에 대한 안내입니다.

 

innodb_buffer_pool_size

InnoDB 스토리지 엔진의 데이터와 인덱스를 캐싱하는 데 사용되는 메모리 풀 크기입니다.

적절한 크기로 설정하여 자주 액세스되는 데이터를 메모리에 보관합니다. 일반적으로 전체 메모리의 70-80%를 할당합니다.

 

innodb_log_file_size

InnoDB 로그 파일의 크기로, 트랜잭션 로그를 저장합니다.

큰 트랜잭션 처리 시 로그 파일 크기를 크게 조정하며, 256MB 이상이 일반적입니다. 변경 시 InnoDB 로그 파일을 백업하고 재시작 필요.

key_buffer_size

MyISAM 인덱스 키를 캐싱하는데 사용되는 메모리 풀 크기입니다.

MyISAM 테이블을 사용할 경우, 인덱스 크기에 따라 조절하며, 전체 메모리의 25-30% 정도를 할당합니다.

query_cache_size

이전에 실행된 쿼리와 결과를 캐싱하는 크기입니다.

작은 쿼리 또는 자주 변경되지 않는 데이터베이스에서는 활용이 크며, 적절한 크기로 설정 필요.

innodb_flush_log_at_trx_commit

트랜잭션 로그를 디스크에 얼마나 자주 기록할지 결정합니다.

1이 기본값으로 안정성을 제공하지만, 2는 더 높은 성능을 제공할 수 있습니다. 다만, 트랜잭션의 손실 가능성이 있음.

innodb_doublewrite

InnoDB에서 데이터 파일에 쓰기 전에 버퍼에 두 번 쓰는 방식을 사용할지 여부를 결정합니다.

1이 기본값으로 안정성을 높이지만, 대량의 쓰기 작업이 있는 경우 0으로 설정하여 성능 향상 가능.

innodb_flush_method

InnoDB 버퍼 풀을 디스크에 어떻게 플러시 할지 결정합니다.

IO_DIRECT는 일반적으로 성능을 향상시키며, 특히 파일 시스템 캐싱을 피하기 위해 사용됩니다.

table_open_cache

열려 있는 테이블의 최대 수를 나타냅니다.

시스템이 동시에 많은 테이블을 다루는 경우 늘려주며, 사용 패턴에 따라 조절 필요.

innodb_file_per_table

각 InnoDB 테이블에 대해 별도의 데이터 파일을 사용할지 여부를 결정합니다.

ON으로 설정하면 테이블 별로 파일이 생성되어 유지보수 및 공간 활용 측면에서 유리할 수 있습니다.

max_connections

동시에 열 수 있는 최대 연결 수를 나타냅니다.

시스템의 처리 능력 및 예상 트래픽에 따라 조절하며, 높은 값은 메모리 사용량을 증가시킬 수 있습니다.