728x90
1. 튜닝이 왜 필요한가?
MariaDB의 메모리 튜닝은 서버의 성능 최적화와 안정성 보장을 위해 필수적입니다.
- 성능 최적화 : 튜닝을 통해 적절하게 메모리를 사용하면 처리 속도가 빨라지고, 데이터베이스 응답 시간이 단축됩니다.
- 안정성 향상 : 메모리 설정을 통해 메모리 누수나 과도한 사용으로 인한 서버 다운타임을 방지할 수 있습니다.
- 자원 효율성 : 시스템 자원을 효율적으로 사용하여 서버 운영 효율성을 높일 수 있습니다.
2. 튜닝을 하면서 주의할 점
- 메모리 한계점 확인 : 과도한 메모리 할당은 시스템 전체의 성능 저하를 발생시킬 수 있습니다.
- 단계적 조정 : 한 번에 많은 설정을 변경하기보다는, 모니터링하면서 단계적으로 변경하는 게 중요합니다.
- 테스트 환경 사용 : 설정 변경 전 테스트 환경에서 성능 테스트를 진행한 뒤 실서버에 적용하는 게 안전합니다.
- 문서화 : 튜닝을 한 이유를 명확하게 문서화하면 추후 문제 발생 시 빠른 원인 파악에 도움이 됩니다.
3. 주요 메모리 관련 파라미터
파라미터 | 설명 | 기본값 | 권장 설정 |
innodb_buffer_pool_size | InnoDB 스토리지 엔진에서 사용하는 버퍼 풀 크기 설정 | 128MB | 서버 메모리 70~80% |
key_buffer_size | MyISAM 테이블에 사용되는 키 캐시의 크기 설정 | 8MB | 서버 메모리 10~20% |
max_connections | MariaDB 서버가 허용하는 최대 동시 연결 수 설정 | 151 | 서버 리소스에 따라 조정 |
table_open_cache | 테이블 캐시의 크기를 설정 | 2000 | 서버 리소스에 따라 조정 |
thread_cache_size | 재사용할 스레드 수 설정 | 8 | 서버 리소스에 따라 조정 |
query_cache_size | 쿼리 캐시의 크기를 설정 | 0 | 비활성화 권장 |
query_cache_limit | 쿼리 캐시할 최대 결과 크기 설정 | 1MB | 비활성화 권장 |
tmp_table_size | 메모리 내 임시 테이블의 최대 크기 설정 | 16MB | 서버 리소스에 따라 조정 |
max_heap_table_size | 메모리 내 heap 테이블의 최대 크기 설정 | 16MB | 서버 리소스에 따라 조정 |
join_buffer_size | 조인 작업에 사용되는 버퍼 크기 설정 | 256KB | 기본값 유지 권장 |
sort_buffer_size | 정렬 작업에 사용되는 버퍼 크기 설정 | 256KB | 기본값 유지 권장 |
read_buffer_size | 읽기 작업에 사용되는 버퍼 크기 설정 | 128KB | 기본값 유지 권장 |
read_rnd_buffer_size | 랜덤 읽기 작업에 사용되는 버퍼 크기 설정 | 256KB | 기본값 유지 권장 |
innodb_log_buffer_size | InnoDB 로그 버퍼 크기 설정 | 16MB | 기본값 유지 권장 |
binlog_cache_size | binary log의 메모리 버퍼 크기 설정 | 32KB | 서버 리소스에 따라 조정 |
thread_stack | 스레드 별 할당되는 스택 메모리 크기 설정 | 192KB | 기본값 유지 권장 |
4. 설정된 값 확인
- SHOW VARIABLES; // 모든 설정 값 확인
- SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
- SHOW VARIABLES LIKE 'key_buffer_size';
- SHOW VARIABLES LIKE 'max_connections';
- SHOW VARIABLES LIKE 'thread_stack';
5. Connection 별 메모리 사용률 확인
SET @kilo_bytes = 1024;
SET @mega_bytes = @kilo_bytes * 1024;
SET @giga_bytes = @mega_bytes * 1024;
SET @innodb_buffer_pool_size = 2 * @giga_bytes;
SET @innodb_additional_mem_pool_size = 16 * @mega_bytes;
SET @innodb_log_buffer_size = 8 * @mega_bytes;
SET @thread_stack = 192 * @kilo_bytes;
SELECT
( @@key_buffer_size + @@query_cache_size + @@tmp_table_size
+ @innodb_buffer_pool_size + @innodb_additional_mem_pool_size
+ @innodb_log_buffer_size
+ @@max_connections * (
@@read_buffer_size + @@read_rnd_buffer_size + @@sort_buffer_size
+ @@join_buffer_size + @@binlog_cache_size + @thread_stack
) ) / @giga_bytes AS MAX_MEMORY_GB;
실제메모리 사용량 (Actual Used Physical Memory) Mem: total -(free + buffers + cached) buffers/cache: used
실제메모리 사용률 ( total - free - buffers - cached) / total (total - buffer/cashe: free) /total
728x90
반응형
'DB > Mysql(MariaDB)' 카테고리의 다른 글
MariaDB - 초기 보안 설정 mysql_secure_installation 사용법 (0) | 2024.06.18 |
---|---|
MariaDB - AUTO_INCREMENT 확인 및 초기화 방법 (0) | 2024.05.31 |
MariaDB - 컬럼 내 문자 변경(Replcae) (0) | 2024.05.17 |
MariaDB - max_connections 변경하기 (0) | 2024.05.08 |
MariaDB - DB 로그 파일 관리하기 (0) | 2024.05.03 |