반응형
db에는 자주 사용되는 테이블들을 캐시에 저장해놓고 더욱 빠르게 제공을 하려고한다.
이때 캐시에 들어있는 데이터를 많이 사용할수록 캐시 적중률이 높아진다.
mysql은 Table_open_cache_hits, Table_open_cache_misses,Table_open_cache_overflows 을 가지고 캐시 적중률을 확인할 수 있다.
SHOW GLOBAL STATUS LIKE 'Table_open_cache_%';
예를 들어 아래와 같이 조회 되었을 경우 아래와 같이 해석이 가능하다.
- Table_open_cache_hits: 3,175,551
- 테이블 캐시에서 성공적으로 테이블을 찾은 횟수.
- 높은 숫자는 캐시 적중률이 양호하다는 의미입니다.
- Table_open_cache_misses: 2,570
- 캐시에서 테이블을 찾지 못해 디스크에서 새로 열어야 했던 횟수.
- 캐시가 충분하지 않을 때 발생하며, 이 값이 높다면 캐시 설정을 조정할 필요가 있습니다.
- Table_open_cache_overflows: 622
- 캐시가 꽉 차서 이전에 열린 테이블을 제거해야 했던 횟수.
- 캐시 크기가 작은 경우, 불필요한 테이블 교체로 인해 성능 저하가 발생할 수 있습니다.
적중률 계산
적중률 (%) = (Table_open_cache_hits / (Table_open_cache_hits + Table_open_cache_misses)) * 100 = (3,175,551 / (3,175,551 + 2,570)) * 100 ≈ 99.92%
조치 필요 여부
- 현재 적중률이 높고, misses와 overflows의 수치가 적당히 관리 가능한 수준입니다. 하지만:
- 트래픽이 더 증가할 경우 table_open_cache 크기를 늘려야 할 가능성이 있습니다.
- 특히, 오버플로우가 0에 가까운 상태가 이상적이므로 상황에 따라 캐시 크기를 소폭 늘리는 것을 고려하세요.
table_open_cache 가 높은데도 불구하고 트래픽이 증가할 경우
- 비효율적인 쿼리 사용:
- 짧은 시간에 너무 많은 테이블을 열거나, 불필요하게 여러 테이블을 사용하는 쿼리가 많을 수 있습니다.
- 특히, JOIN이나 서브쿼리에서 불필요하게 테이블을 반복적으로 여는 경우가 문제가 될 수 있습니다.
- 테이블 캐시 정리 정책:
- MySQL은 오래된 테이블을 캐시에서 제거해 새로운 테이블을 열도록 설정되어 있습니다.
- 기본적으로 LRU(Least Recently Used) 방식으로 캐시된 테이블을 관리하므로, 특정 테이블이 자주 호출되지 않으면 캐시에서 빠지게 됩니다.
반응형
'DB(SQL) > mysql|maria' 카테고리의 다른 글
[mysql] binary log (feat. 증분 백업.. 할 수 있을까..?) (0) | 2024.12.20 |
---|---|
[DB] mysql 성능 관리하기 (공부해야 할 내용들) (feat. gcp) (1) | 2024.12.06 |
[DB] Binary Log (feat. Redo Log) (1) | 2024.11.29 |
[mysql] mysqld.cnf 기본 (2) | 2024.10.21 |
[mariadb] 50-server.cnf (0) | 2024.10.14 |