본문 바로가기
Mysql/MySQL 아키텍처 심층 분석

Redo/Undo 튜닝 시나리오 실습

by DEVLIB 2025. 4. 18.
728x90

Redo / Undo 튜닝 시나리오 실습

이 실습은 TPS 향상, 트랜잭션 안정성 확보, 디스크 IO 절감을 목표로 설계합니다.


1. 실습 환경 준비

항목 설정값
MySQL 버전 8.0 이상 권장
테스트 테이블 대량 Insert/Update/Select용
트랜잭션 부하 도구 sysbench 추천 or 간단한 스크립트 제작

예시: 테스트용 테이블 생성

CREATE TABLE t1 (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    c1 VARCHAR(255),
    c2 INT,
    c3 DATETIME
) ENGINE=InnoDB;

2. 기본 Redo/Undo 설정 확인

먼저 현재 설정을 확인합니다:

SHOW VARIABLES LIKE 'innodb_log_file_size';
SHOW VARIABLES LIKE 'innodb_log_buffer_size';
SHOW VARIABLES LIKE 'innodb_undo_log_truncate';
SHOW VARIABLES LIKE 'innodb_undo_tablespaces';

 

→ 이 값들을 기록해둡니다.


3. 성능 부하 테스트 - Before

변경 없이 대량 트랜잭션을 수행하고, 기본 성능을 측정합니다.

부하 스크립트 (Insert 예시)

START TRANSACTION;
INSERT INTO t1 (c1, c2, c3) VALUES 
(REPEAT('A', 100), FLOOR(RAND()*1000), NOW()),
(REPEAT('B', 100), FLOOR(RAND()*1000), NOW()),
(REPEAT('C', 100), FLOOR(RAND()*1000), NOW());
COMMIT;

 

10000번 반복 스크립트로 TPS(Time per Second) 측정합니다.

측정 항목

  • 트랜잭션 수
  • TPS (Transaction per Second)
  • Redo Buffer 사용량
  • Undo History List 길이
SHOW ENGINE INNODB STATUS\G
SELECT * FROM performance_schema.events_statements_summary_by_digest ORDER BY COUNT_STAR DESC LIMIT 5;

4. 튜닝 적용

4.1 Redo Log 튜닝

항목 튜닝 내용
innodb_log_file_size 256MB → 1GB로 증가
innodb_log_buffer_size 16MB → 128MB로 증가
[mysqld]
innodb_log_file_size=1G
innodb_log_buffer_size=128M

 

반드시 서버 재시작 필요 (Redo Log 파일 사이즈 변경 시)

4.2 Undo Log 튜닝

항목 튜닝 내용
innodb_undo_log_truncate ON (자동 압축)
innodb_undo_tablespaces 2개 이상 설정
[mysqld]
innodb_undo_log_truncate=ON
innodb_undo_tablespaces=2
  • Undo Tablespace도 새로 생성하거나 설정 후 재시작 필요할 수 있음

5. 성능 부하 테스트 - After

튜닝 적용 후 다시 동일한 부하 테스트를 수행합니다.

비교 측정 항목

  • 트랜잭션 수
  • TPS
  • Redo Buffer Flushing 빈도
  • Undo History List 길이 감소 여부
  • CPU Usage / IO Wait 비율

6. 예상 기대 효과

항목 기대 효과
Redo Log 크기 증가 Checkpoint 간격 증가 → 디스크 IO 감소
Redo Buffer 크기 증가 트랜잭션 커밋시 플러시 부하 감소
Undo 자동 축소 장기 트랜잭션으로 인한 메모리 누수 방지
Undo Tablespace 분리 Undo 정리 효율성 향상

실습 요약 단계

단계 내용
1단계 현재 설정 백업
2단계 부하 테스트(Before) 및 성능 측정
3단계 Redo/Undo 설정 변경 및 서버 재시작
4단계 부하 테스트(After) 및 결과 비교
5단계 TPS, IO 부하, Undo 히스토리 개선 여부 분석

실전 체크리스트

  • Redo/Undo 설정 변경 전 모든 설정값 백업했는가?
  • 부하 테스트는 동일 조건으로 진행했는가?
  • 서버 재시작으로 설정 반영이 확실히 되었는가?
  • 부하 후 SHOW ENGINE INNODB STATUS 로 상태 점검했는가?
  • 튜닝 효과를 수치로 비교했는가?
LIST