InnoDB 스토리지 엔진 아키텍처, MYSQL 로그파일

2024. 12. 10. 22:36·데이터베이스

2024.12.06 - [데이터베이스] - RealMySQL 4장 아키텍쳐 : MySQL 엔진에 대해 알아보자

 

RealMySQL 4장 아키텍쳐 : MySQL 엔진에 대해 알아보자

커넥션 핸들러MySQL 커넥션 핸들러는 애플리케이션이 MySQL 데이터베이스와 통신할 수 있도록 돕는 역할을 합니다. JDBC는 그 중간에서 데이터베이스와 애플리케이션 간의 연결을 관리하는 대표적

maxwithjude.tistory.com

 

전 글의 언두 로그에 이어 리두 로그라는 것이 있다.

언두 로그는 트랜잭션이 실패하거나 롤백될 경우 변경된 데이터를 이전 상태로 복구하기 위해 사용한다.

 

InnoDB 스토리지 엔진 아키텍처 구조

그럼 리두 로그는 어디에 쓰는 걸까?

 

리두 로그

리두 로그는 전원 끊김 등 시스템 장애가 생겼을 때 장애 복구 및 영속성 보장을 위해 사용된다. 

 

동작 원리

  • 데이터가 변경되면 그 변경 내용을 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 속성을 보장하는 핵심 요소이다.

출처 : RealMYSQL

 

어댑티브 해시 인덱스(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
'데이터베이스' 카테고리의 다른 글
  • [MySQL] DBMS 압축
  • MySQL InnoDB 트랜잭션과 락, 격리 수준
  • RealMySQL 4장 아키텍쳐 : MySQL 엔진에 대해 알아보자
  • DB 성능 최적화 방법
maxwithjude
maxwithjude
maxwithjude 님의 블로그 입니다.
  • maxwithjude
    maxwithjude 님의 블로그
    maxwithjude
  • 전체
    오늘
    어제
    • 분류 전체보기 (29) N
      • 네트워크 (2)
      • 프론트 (2)
      • Devops (7)
      • 데이터베이스 (6)
      • 영어회화 + 자격증 (2)
      • 개발 프로젝트 (9) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Vtuber
    innodb
    AWS
    EC2
    db 격리수준
    Docker
    채팅api
    mysql에러로그
    Nest.js
    osi 응용계층
    오픽후기
    서브모듈
    부하테스트
    오블완
    vroid studio
    싸피
    버츄얼 모델 프로젝트
    db 압축
    CNCF
    티스토리챌린지
    ssl/tls
    인덱스
    mysql #db #database #성능 최적화
    db 락
    오픽주엽
    typeorm
    센드버드
    vue3
    Sendbird
    mysql
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
maxwithjude
InnoDB 스토리지 엔진 아키텍처, MYSQL 로그파일
상단으로

티스토리툴바