2010년 7월 8일 목요일

[MySQL 모니터링 및 엔진 최적화]MySQL 환경변수

커넥션 관련 환경 변수

 - max_used_connections : 피크 타임의 동시 접속수 (튜닝시 중요)

 - bytes-receved, bytes-sent : 모든 클라이언트와 전송량

 - connection : 시도된 커넥션의 총합

 - aborted_connects : 접속이 끊어진 커넥션의 총 합 (높을 경우 어플리케이션 커넥션정보 확인필요)

 

쓰레드 관련 환경 변수

 - threads_connected : 현재 열려 있는 커넥션 수

 - threads_cached : 재사용 가능한 동작중이지 않은 커넥션 수

 - threads_created : 서버 시작후 현재까지 만들어진 쓰레드 수

 - threads_running : sleeping가 아닌 동작중인 쓰레드

 - slow_launch_threads : 쓰레드 생성시 시간이 2초이상이 걸린 쓰레드의 수 (0에 가까워야함 높아지면 부하가 높아진다는 뜻)

 - threads_created/connections - 캐시 적중률(적중률이 낮으면 cache사이즈를 증가시켜주는것이 좋음)

 

 

핸들러 관련 환경 변수

 - 모든 handler_xxx 환경 변수들은 내부의 테이블 핸들러의 동작 상황에 대한 정보를 제공

 - 핸들러 관련 환경 변수에 대한 일반적인 해석

 - handler_read_first가 높은 경우 -> 많은 풀 인덱스 스캔이 이루어짐 (메모리)

 - handler_read_next가 높은 경우 -> 풀 인덱스 스캔과 레인지 스캔이 이루어짐 (메모리)

 - handler_read_random가 높은 경우 -> 많은 풀 테이블 스캔과 레인지 스캔이 이루어짐 (디스크)

 - handler_read_key가 높은 경우 -> 인덱스를 읽은 경우가 많음(메모리), 좋은 수치

 

 

성능 관련 문제를 보여주는 항목들

 - MySQL의 느린 응답을 나타내는 항목

     slow_queries, slow_luanch_thread

 

 - 부하가 심하다는 것을 나타내는 항목

     thread_created가 큰경우,

     max_used_connections가 큰경우,

     opend_tables가 큰경우(table_cache를 올리는 것이 좋음),

     handler_read_key가 높은 경우

 

 - 락 경쟁과 관련된 항목(MyISAM에서 중요함)

      table_locks_waited VS table_locks_immediate (락획득시 대기/비대기 수치)

      업데이트가 많아지면 Lock경쟁이 높아진다 -> InnoDB로 변경하는 것이 해결책

 

 

쿼리 관련 문제를 보여주는 항목들

 

 - Created_tmp_disk_tables 환경 변수가 큰 경우

    메모리에 적용할 수 없는 큰 임시 테이블이 많이 만들어졌다는 의미

    -> tmp_table_size를 올려줘서 해결(사용에 주의)

 

 - Select_xxx 환경변수의 값이 큰 경우

    select쿼리가 최적화되지 못했음을 의미

    -> select_full_join과 select_range_check는 일반적으로 더 많은 인덱스를 작성해줘야함

 

 - Sort_xxx 환경변수 값이 큰 경우

    sort_merge_passes가 큰 경우 ordering하는 작업비용이 크다는 의미

    -> sort_buffer_size를 늘리거나 인덱스를 추가

댓글 없음:

댓글 쓰기