InnoDB 알아보기 (In-Memory Structures - Log Buffer)
2024. 1. 31. 23:23ㆍDatabase
Log Buffer
로그 버퍼는 리두 로그를 버퍼링하기 위한 메모리 영역이다.
(리두 로그에 대한 자세한 내용은 다음 글에서 알아보자)
데이터의 변경이 발생하는 경우, 해당 변경에 대한 리두 로그를 기록해야 한다.
리두 로그는 디스크에 존재하므로 리두 로그의 기록은 디스크 접근을 발생시키고,
이러한 작업이 많아질수록 성능은 저하된다.
따라서 리두 로그를 매번 디스크에 기록하지 않고,
특정 영역에 저장하여 일정 주기로 디스크에 기록하도록 하여 성능을 향상시키는데,
이때 사용되는 영역이 로그 버퍼이다.
로그 버퍼의 내용을 디스크에 기록하는 주기는 innodb_flush_log_at_trx_commit을 통해 조절할 수 있다.
설정 가능한 옵션은 다음과 같다.
- 0: 1초에 한 번씩 리두 로그가 로그 버퍼에 쓰여지고 디스크로 플러시된다.
- 1: 트랜잭션이 커밋될 때마다 리두 로그가 로그 버퍼에 기록되고 디스크에 플러시된다. 완전한 ACID를 준수하고 싶다면 해당 옵션을 선택해야 한다. (기본값)
- 2: 트랜잭션이 커밋될 때마다 리두 로그가 로그 버퍼에 쓰여지지만, 디스크로의 플러시는 1초에 1번씩 발생한다.
로그 버퍼의 크기는 기본적으로 16KB로, 변경을 원한다면 innodb_log_buffer_size 옵션을 통해 바꿀 수 있다.
BLOB이나 TEXT와 같이 큰 데이터를 자주 변경한다면 해당 값을 더 크게 설정하는 것이 좋다.
참고
- Real MySQL 8.0
- MySQL
- innodb_flush_log_at_trx_commit - [SystemV's:티스토리]
'Database' 카테고리의 다른 글
InnoDB 알아보기 (On-Disk Structures - DoubleWriteBuffer) (0) | 2024.02.03 |
---|---|
InnoDB 알아보기 (On-Disk Structures - Tablespace) (0) | 2024.02.02 |
InnoDB 알아보기 (In-Memory Structures - Adaptive Hash Index) (1) | 2024.01.31 |
InnoDB 알아보기 (In-Memory Structures - Change Buffer) (0) | 2024.01.29 |
InnoDB 알아보기 (In-Memory Structures - Buffer Pool) (0) | 2024.01.29 |