Skip to main content

DBMS 모니터링 : Cache

테이블 오픈 캐시

MySQL의 테이블 오픈 캐시 비율은 데이터베이스의 총 테이블 수 대비 MySQL 서버가 메모리에서 열고 캐시하는 테이블의 비율을 나타냅니다. 테이블 오픈 캐시 비율은 자주 액세스하는 테이블을 저장하기 위해 메모리를 사용하는 MySQL 서버의 효율성을 측정한 것이며 데이터베이스의 전체 성능에 영향을 미칠 수 있습니다.

일반적으로 높은 테이블 오픈 캐시 비율은 더 많은 테이블이 메모리에 저장되고 있음을 의미하며, 이는 테이블에 액세스하는 데 필요한 디스크 I/O의 양을 줄이고 데이터베이스 쿼리 속도를 높일 수 있습니다. 그러나 높은 테이블 오픈 캐시 비율은 또한 MySQL 서버에서 더 많은 메모리를 사용하고 있음을 의미하며, 이는 시스템의 전체 성능에 영향을 미치고 제대로 관리되지 않으면 메모리 제약으로 이어질 수 있습니다.

테이블 오픈 캐시 비율을 최적화하려면 캐시 사용량을 모니터링하고 필요에 따라 table_cache 시스템 변수를 조정하여 가장 자주 액세스하는 테이블이 메모리에 저장되도록 하는 것이 중요합니다. 또한 시스템의 전체 메모리 사용량을 추적하고 필요에 따라 사용 가능한 메모리를 조정하여 MySQL 서버가 효율적으로 작동하기에 충분한 리소스를 갖도록 하는 것이 중요합니다.

사용된 Parameter 정보는 아래와 습니다.

  • TABLE_OPEN_CACHE : deamon이 Table 오픈할 수 있는 최대 수
  • 계산 TABLE_OPEN_CACHE_HITS / (TABLE_OPEN_CACHE_HITS + TABLE_OPEN_CACHE_MISSES) * 100

스레드 캐시 적중률

MySQL의 스레드 캐시 적중률은 서버가 스레드 캐시를 얼마나 효율적으로 사용하는지 보여주는 성능 메트릭입니다. 총 스레드 생성 요청에 대한 성공적인 스레드 재사용의 비율로 계산됩니다. 높은 스레드 캐시 적중률은 서버가 스레드를 효율적으로 재사용할 수 있고 각 연결 요청에 대해 새 스레드를 생성하는 오버헤드를 최소화할 수 있음을 나타냅니다.

스레드 캐시 적중률이 100%라는 것은 모든 연결 요청이 캐시된 스레드에 의해 처리되고 있음을 의미하는 반면 낮은 적중률은 서버가 스레드 캐시를 효율적으로 사용하지 않아 각 요청에 대해 새 스레드를 생성하게 됨을 나타낼 수 있습니다. 서버 성능을 저하시킬 수 있습니다.

스레드 캐시 적중률을 최적화하려면 MySQL 구성 파일에서 thread_cache_size 변수를 조정하여 스레드 캐시의 크기를 늘릴 수 있습니다. 캐시 크기가 클수록 서버는 더 많은 스레드를 재사용하고 새 스레드를 만드는 오버헤드를 최소화하여 성능을 향상시킬 수 있습니다.

사용된 Parameter 정보는 아래와 같습니다.

  • THREAD_CACHE_SIZE : daemon이 쓰레드를 재사용 하기위해 캐시하는 쓰레드 수. 일반적으로 max_connections/100. Connections and Threads_created 참고.
  • SLOW_LAUNCH_THREADS : 쓰래드 생성에 걸린 시간이 slow_launch_time 이상 걸린 쓰래드의 수
  • 계산 100 - threadsCreated / connections * 100

Binlog 캐시 디스크 사용률

Binlog 캐시 디스크 사용량은 MySQL 데이터베이스 시스템에서 바이너리 로그 파일을 저장하는 데 사용되는 디스크 공간의 양을 나타냅니다. 이진 로그 캐시라고도 하는 이진 로그 파일은 데이터 삽입, 업데이트 및 삭제와 같은 데이터베이스 변경 사항을 추적하는 데 사용됩니다.

MySQL에서 바이너리 로그 파일은 디스크에 저장되며 이러한 파일을 저장하는 데 필요한 디스크 공간의 크기는 데이터베이스 변경의 양과 데이터베이스 트랜잭션의 빈도에 따라 다릅니다. Binlog 캐시 디스크 사용량 메트릭은 데이터베이스 시스템의 성능과 안정성에 영향을 줄 수 있기 때문에 중요합니다. 디스크 사용량이 많으면 데이터베이스 성능이 느려지고 디스크 I/O 작업이 증가할 수 있습니다.

Binlog 캐시 디스크 사용량을 줄이기 위해 관리자는 캐시 크기를 늘리고 오래된 바이너리 로그 파일을 정기적으로 제거하는 등 데이터베이스 구성을 최적화할 수 있습니다. 또한 Binary Log Rotate 기능을 사용하여 오래된 바이너리 로그 파일을 자동으로 회전 및 보관하여 디스크 공간을 확보하고 성능을 향상시킬 수 있습니다.

결론적으로 Binlog 캐시 디스크 사용량을 모니터링하고 최적화하는 것은 건강하고 효율적인 MySQL 데이터베이스 시스템을 유지하는 데 중요한 측면입니다.

사용된 Parameter 정보는 아래와 습니다.

  • BINLOG_CACHE_SIZE : Thread당 바이너리로그에 대한 캐싱메모리 크기
  • BINLOG_STMT_CACHE_SIZE : Thread당 Statement(Non-Transaction)에 대한 바이너리로그에 대한 캐시메모리 크기

쿼리 캐시

MySQL 쿼리 캐시는 동일한 SELECT 쿼리의 결과를 메모리에 저장하여 반복 실행 시 디스크 I/O 없이 빠르게 결과를 반환하는 성능 최적화 기능입니다. 이를 통해 데이터베이스의 응답 속도를 크게 향상시킬 수 있습니다.

쿼리 캐시의 지표에 대한 설명은 아래와 같습니다.

  • Qcache Hits : 쿼리 캐시 적중 횟수
  • Qcache Inserts : 쿼리 캐시 삽입 횟수
  • Qcache Not Cached : 캐시되지 않은 쿼리 수
  • Qcache Lowmem Prunes : 메모리 부족으로 인한 제거 횟수
  • Ratio : 쿼리 캐시 적중률