2010년 7월 7일 수요일

[MySQL 쿼리 및 인덱스의 이해]Status값을 활용한 Query성능 평가

MySQL STATUS
 - 수집된 정보를 메모리상에 관리 : SHOW STATUS를 통해서 모니터링 가능
 - 각항목을 확인하여 서버동작 상황 모니터링
 - 성능을 최적화할 때 기본적인 가이드 제공
 - 아래 두가지 방법으로 확인 가능
   mysqladmin -i 10 extended-status //10초마다 로그출력
   MySQL Administrator에서 GUI로 확인 가능

 


기본적인 STATUS 모니터링
 - mysql> show [session,global] status
 - uptime : 서버가동시간
 - com_xxx : 서버시작이후 xxx관련 명령이 얼마나 수행되었나(기본은 세션별)

 

 

MySQL Handler Status값의 의미
 - mysql> show session status like 'Handler_read%';
 - MYSQL이 수행하는 논리적 row 단위 operation은 handler변수에 의해 카운트 됨
 - 값의 의미

   Handler_read_first : Index의 첫번째 Node Access, FULL_INDEX_SCAN
   Handler_read_key : 특정값으로 Tree Search를 통해 index Node를 선택하는 경우, INDEX_SEEK
   Handler_read_next : 인덱스의 leaf노드들의 링크를 Range스캔할 경우
   Handler_read_prev : 위와 반대로 역순 Range스캔
   Handler_read_random : Sorting같은 Buffer에 저장된 row에 대한 Access
   Handler_read_random_next : 데이터Block나 Temp Table에서 순차적으로 row를 읽는 경우,FULL_TABLE_SCAN

 - Index를 통한 RowAccess : first + key + next + read_prev
 - Table scan을 통한 RowAccess : random + random_next
 - 가급적 Index를 통한 Access가 일어나도록 유도하는 것이 바람직함

 

 

SHOW XXX_STATISTICS의 사용
 - 기본적으로 MySQL에서 제공하지 않는 User,Table, Index와 관련된 정보를 보여줌
 - Google에서 제작한 패치
 - SHOW USER_STATISTICS
 - SHOW TABLE_STATISTICS
 - SHOW INDEX_STATISTICS

 

 

MYSQL XXX-STATISTICS의 사용
 - mysql> show index_statistics like '%SERVERDB%'

 

댓글 없음:

댓글 쓰기