http://www.mysqlkorea.co.kr
한글매뉴얼 5.0 , 한글매뉴얼 5.1 , MySQL 5.1 HA , 사용자매뉴얼
Advanced Knowle...  
엔지니어 노트  
블로그존  
글로벌 MySQL  
MySQL 5.5 GA  
MySQL 5.6 Developer  
최신글
슬로우쿼리 발생 …
안녕하세요... ma…
FTS_xxxx.ibd 파…
MySQL Notifier :…
table size관련 …
 
MySQL5.5.x Performance Schema
글쓴이 : royster   날짜 : 11-10-13 09:18   조회수 : 7602

MySQL5.5.x Performance Schema

MySQL Performance Schema는 Low Level에서 MySQL Server의 Performance를 모니터링 하기위한 5.5버젼의 새로운 기능입니다.
본 chapter에서는 Performance Schema을 사용하는 방법과 예제를 통하여 Performance Schema를 소개합니다.
MySQL Server에 Performance Schema를 사용할 수 있도록 구성하여야 합니다.
여러분은 command line에 아래와 같이 Performance Schema의 정보를 조회해 볼수 있습니다.
출력내용은 performance_schema로 시작하는 이름의 variables들이 출력 됩니다.
shell> mysqld --verbose --help
...
  --performance_schema
                      Enable the performance schema.
  --performance_schema_events_waits_history_long_size=#
                      Number of rows in events_waits_history_long.
...
만약에 performance_schema로 시작되는 variables가 출력되지 않는 경우에는 해당 MySQL버젼이 performance schema를 지원하지 않거나
MySQL Server가 performance schema를 지원하도록 설정 되지 않은것입니다.
performance schema를 사용할 수 있다고 가정할때 default로 비활성화 상태입니다.
performace_schema variables를 사용하여 MySQL Server를 재시작 하세요.
my.cn f 파일에 아래와 같이 설정하세요.
[mysqld]
performance_schema
MySQL Server가 재시작되면 performance_schema를 초기화합니다.
아래 performance_schema variable의 값이 ON 인지 확인하세요.
mysql> SHOW VARIABLES LIKE 'performance_schema';
+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| performance_schema | ON    |
+--------------------+-------+
performance_schema variable의 값이 ON 이라면 정상적으로 MySQL Server가 start-up 된것이며
만약에 OFF 라면 오류가 발생된 것입니다. hostname.err파일을 참고하세요.
performance_schema는 Storage Engine으로 인식합니다.
performance_schema Engine을 사용할 수있는 경우 여러분은 INFORMATION_SCHEMA.ENGINES TABLE 이나
show engines 명령문으로 조회할수 있습니다.(아래를 참고하세요)
mysql> SELECT * FROM INFORMATION_SCHEMA.ENGINES
    -> WHERE ENGINE='PERFORMANCE_SCHEMA'\G
*************************** 1. row ***************************
      ENGINE: PERFORMANCE_SCHEMA
     SUPPORT: YES
     COMMENT: Performance Schema
TRANSACTIONS: NO
          XA: NO
  SAVEPOINTS: NO
mysql> SHOW ENGINES\G
...
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
...
performance_schema Storage Engine은 performance_schema Database 내의 각각의 Table들에서 운영됩니다.
use database-name 문으로 access할수 있습니다.
mysql> USE performance_schema;
performance_schema Table들은 performance_schema Database에 저장됩니다.
INFORMATION_SCHEMA.TABLES 에서 SELECT 하거나, SHOW statements 를 사용하면 됩니다.(아래를 참고하세요)
mysql> SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
    -> WHERE TABLE_SCHEMA = 'performance_schema';
+----------------------------------------------+
| TABLE_NAME                                   |
+----------------------------------------------+
| cond_instances                               |
| events_waits_current                         |
| events_waits_history                         |
| events_waits_history_long                    |
| events_waits_summary_by_instance             |
| events_waits_summary_by_thread_by_event_name |
| events_waits_summary_global_by_event_name    |
| file_instances                               |
| file_summary_by_event_name                   |
| file_summary_by_instance                     |
| mutex_instances                              |
| performance_timers                           |
| rwlock_instances                             |
| setup_consumers                              |
| setup_instruments                            |
| setup_timers                                 |
| threads                                      |
+----------------------------------------------+
mysql> SHOW TABLES FROM performance_schema;
+----------------------------------------------+
| Tables_in_performance_schema                 |
+----------------------------------------------+
| cond_instances                               |
| events_waits_current                         |
| events_waits_history                         |
...
performance_schema Database의 이름은 소문자이며, 또한 Query 작성시에도 소문자로 지정하여야 합니다.
note) MySQL 5.5.8 이전 version에서는 System Variable인 lower_case_table_names의 특정 값이 일부 System에서 문제점이 있었습니다.
자 그럼 이제 performance_schema DB 내의 Table의 구조을 조회하려면 show create table table-name\G문으로 조회해 보세요.
mysql> SHOW CREATE TABLE setup_timers\G
*************************** 1. row ***************************
       Table: setup_timers
Create Table: CREATE TABLE `setup_timers` (
  `NAME` varchar(64) NOT NULL,
  `TIMER_NAME` enum('CYCLE','NANOSECOND','MICROSECOND','MILLISECOND','TICK')
   NOT NULL
) ENGINE=PERFORMANCE_SCHEMA DEFAULT CHARSET=utf8
현재 event , event history 및 요약 ,object instances 그리고 설정정보 performance_schema 데이타베이스의 Tables은
정보의 종류에 따라 그룹화 할수 있습니다.
아래 예제는 이러한 Table들에 대한 사용법을 설명합니다.
MySQL Server가 현재 무엇을 하는지를 조회하려면 events_waits_current Table을 조회하세요.
각각의 Thread의 최근 모니터링 이벤트를 출력합니다.
mysql> SELECT * FROM events_waits_current\G
*************************** 1. row ***************************
            THREAD_ID: 0
             EVENT_ID: 5523
           EVENT_NAME: wait/synch/mutex/mysys/THR_LOCK::mutex
               SOURCE: thr_lock.c:525
          TIMER_START: 201660494489586
            TIMER_END: 201660494576112
           TIMER_WAIT: 86526
                SPINS: NULL
        OBJECT_SCHEMA: NULL
          OBJECT_NAME: NULL
          OBJECT_TYPE: NULL
OBJECT_INSTANCE_BEGIN: 142270668
     NESTING_EVENT_ID: NULL
            OPERATION: lock
      NUMBER_OF_BYTES: NULL
                FLAGS: 0
...
thread_ID 0 은 THR_LOCK::mutex에 lock을 얻기 위해 86,525 picoseconds(1조분의1초)를 대기함을 나타냅니다.
• ID칼럼은 event의 thread표시 및 event번호 입니다.
• EVENT_NAME은 계측범위를 나타내며 SOURCE는 source file에 instrumented code가 포함되있다는 것을 알려줍니다.
이전글 MySQL5.5.x Storage Engines 
다음글 MySQL 5.5 Semi-Synchronous Replication 
MySQL Korea 사이트의 컨텐츠 소유권은 (주)상상이비즈에 있으므로 무단전재를 금합니다.
ⓒ 2010-2011 ssebiz All Rights Reserved.