MySQL & Maria DB Innodb_buffer_pool 사용량은 성능에 중요한 Point가 된다.
사용량이 높게되면 Disk I/O가 발생하게 되고 성능이 떨어지게된다.
Innodb_buffer_pool_size는 DOCS에서는 physical memory의 80%로 하는것을 말하고 있다.
버퍼 사용량
사용량(%) = Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100
- 100% : 메모리가 가득 차 있으며 추가적인 읽기/쓰기 작업이 디스크에 의존하게 되어 성능 저하를 초래할 가능성이 높습니다
- 이 값이 100%라면?
- Buffer Pool이 데이터로 완전히 채워졌으며 더 이상 추가 데이터를 캐시할 여유가 없음.
- 신규 데이터를 캐싱하려면 기존 데이터를 제거해야 하므로 캐싱 효율이 저하될 가능성이 높음.
- 디스크 I/O 증가 가능성이 있음(특히 디스크에서 읽어와야 하는 데이터가 많아질 때).
- Buffer Pool 크기가 데이터베이스 크기에 비해 작음.
- 쿼리가 비효율적으로 작성되어 불필요하게 많은 데이터를 읽고 있음.
- 데이터 접근 패턴이 랜덤하거나, 자주 사용되지 않는 데이터를 불필요하게 캐싱 중
- 추가로 확인할 사항
- innodb_buffer_pool_pages_free 확인
- 해당 값이 0이면 Buffer Pool에 여유 공간이 없으므로 크기 증가 필요
버퍼 히트율
히트율(%) = ( 1− Innodb_buffer_pool_read_requests / Innodb_buffer_pool_reads ) × 100
- Innodb_buffer_pool_reads: 디스크에서 데이터를 읽은 횟수.
- Innodb_buffer_pool_read_requests: 버퍼 풀에서 데이터를 요청한 총 횟수.
- 95% 이상: 성능이 최적화된 상태.
- 90~95%: 양호하나 Buffer Pool 크기 조정 또는 쿼리 최적화를 고려할 수 있음.
- 90% 미만: 디스크 I/O가 많아 성능 저하 가능성. 조치 필요.
Variable Name
|
Comments
|
Innodb_buffer_pool_dump_status
|
버퍼풀에 보관된 페이지를 기록한 상태
|
Innodb_buffer_pool_load_status
|
버퍼풀이 이전 시점에 해당하는 페이지를 읽음으로 워밍업을 진행한 페이지 수
|
Innodb_buffer_pool_resize_status
|
버퍼풀의 크기를 동적으로 조정하는 작업 상태
|
Innodb_buffer_pool_pages_data
|
전체 버퍼풀에서 현재 사용중인 버퍼풀 페이지 수
|
Innodb_buffer_pool_bytes_data
|
전체 버퍼풀에서 현재 사용중인 버퍼풀 바이트 수
|
Innodb_buffer_pool_pages_dirty
|
버퍼풀의 데이터 중 변경된 페이지 수 (더티페이지 수)
|
Innodb_buffer_pool_bytes_dirty
|
버퍼풀의 데이터 중 변경된 바이트 수(더티 데이터 수)
|
Innodb_buffer_pool_pages_flushed
|
버퍼풀에서 플러시한 페이지 수
|
Innodb_buffer_pool_pages_free
|
전체 버퍼풀에서 사용하지 않은(사용가능한) 페이지 수
|
Innodb_buffer_pool_pages_misc
|
Row lock, hash index 와 같이 오버헤드에 할당되어 사용된 버퍼풀의 페이지 수
|
Innodb_buffer_pool_pages_total
|
전체 버퍼풀의 페이지 수
|
Innodb_buffer_pool_read_ahead_rnd
|
랜덤으로 미리 읽기가 발생한 페이지 수
|
Innodb_buffer_pool_read_ahread
|
미리 읽기 백그라운드 스레드가 버퍼풀로 미리 읽어들인 페이지 수
|
Innodb_buffer_pool_read_ahead_evicted
|
버퍼풀에 미리 읽어들인 페이지 중 사용되지 않고 제거된 페이지 수
|
Innodb_buffer_pool_read_requests
|
버퍼풀에서 논리적인 읽기 요청 횟수
|
Innodb_buffer_pool_reads
|
버퍼풀에 데이터가 없어서 디스크에서 직접 읽은 논리적 수
|
Innodb_buffer_pool_wait_free
|
페이지를 읽거나 생성할때 사용가능한 클린 페이지가 없을 경우 InnoDB가 더티페이지를 비우고 그 작업이 끝나기를 기다리는 값
|
Innodb_buffer_pool_write_requests
|
버퍼풀에 대한 쓰기 횟수
|
출처
'Mysql & Maria > admin' 카테고리의 다른 글
Performance Schema (1) | 2024.12.13 |
---|---|
SHOW SLAVE STATUS (0) | 2024.12.03 |
replication 깨진 후 bin log 복구 (2) | 2024.12.03 |
percona toolkit (pt-table-checksum) (1) | 2024.11.19 |
mysql 5.7 replication 구성 (0) | 2024.11.19 |