
2024.12.06 - [데이터베이스] - RealMySQL 4장 아키텍쳐 : MySQL 엔진에 대해 알아보자
RealMySQL 4장 아키텍쳐 : MySQL 엔진에 대해 알아보자
커넥션 핸들러MySQL 커넥션 핸들러는 애플리케이션이 MySQL 데이터베이스와 통신할 수 있도록 돕는 역할을 합니다. JDBC는 그 중간에서 데이터베이스와 애플리케이션 간의 연결을 관리하는 대표적
maxwithjude.tistory.com
전 글의 언두 로그에 이어 리두 로그라는 것이 있다.
언두 로그는 트랜잭션이 실패하거나 롤백될 경우 변경된 데이터를 이전 상태로 복구하기 위해 사용한다.
그럼 리두 로그는 어디에 쓰는 걸까?
리두 로그
리두 로그는 전원 끊김 등 시스템 장애가 생겼을 때 장애 복구 및 영속성 보장을 위해 사용된다.
동작 원리
- 데이터가 변경되면 그 변경 내용을 Redo Log에 기록.
- 시스템 장애 발생 시, Redo Log를 사용해 트랜잭션 커밋 상태를 복구.
비교 정리
구분 Undo Log Redo Log
주요 목적 | 트랜잭션 롤백 | 장애 복구 및 영속성 보장 |
기록 내용 | 변경 이전 데이터 (Before Image) | 변경 후 데이터 (After Image) |
사용 시점 | 트랜잭션 실패/롤백 시 | 장애 발생 후 복구 시 |
삭제 시점 | 트랜잭션 종료 후 | Redo Log 파일 교체 시 |
관련 연산 | DML (INSERT, UPDATE, DELETE) | 시스템 장애 복구 |
트랜잭션이 커밋될 때마다 리두 로그를 디스크에 기록하는 작업은 많은 부하를 유발한다. 그래서 InnoDB 스토리지 엔진에서 리두 로그를 어느 주기로 디스크에 동기화할지 결정하는 innodb_flush_log_at_trx_commit 이라는 시스템 변수를 제공한다.
두 로그 모두 ACID 속성을 보장하는 핵심 요소이다.
어댑티브 해시 인덱스(Adaptive Hash Index)
일반적으로 인덱스는 조회 성능 개선을 위해 사용자가 직접 생성하는 것인데, 어댑티브 해시 인덱스는 InnoDB 스토리지 엔진에서 사용자가 자주 요청하는 데이터에 대해 자동으로 생성하는 인덱스이다.
innodb_adaptive_hash_index
--위 시스템 변수를 사용해 활성화 비활성화 가능
cpu 사용량, 인덱스 히트율, 어댑티브 해시 인덱스가 사용 중인 메모리 크기를 종합해서 판단해야한다.
가지면 좋은 MYSQL 습관
MYSQL이 실행되는 도중에 발생하는 에러나 경고 메시지가 출력되는 로그 파일이다. 부하를 일으키는 원인을 파악할 수도 있으니 확인하는 습관을 들이는게 좋아보인다.
'데이터베이스' 카테고리의 다른 글
[MySQL] Index 인덱스란? (0) | 2024.12.30 |
---|---|
[MySQL] DBMS 압축 (0) | 2024.12.23 |
MySQL InnoDB 트랜잭션과 락, 격리 수준 (1) | 2024.12.15 |
RealMySQL 4장 아키텍쳐 : MySQL 엔진에 대해 알아보자 (2) | 2024.12.06 |
DB 성능 최적화 방법 (1) | 2024.11.12 |