http://www.mysqlkorea.co.kr
한글매뉴얼 5.0 , 한글매뉴얼 5.1 , MySQL 5.1 HA , 사용자매뉴얼
Advanced Knowle...  
엔지니어 노트  
블로그존  
글로벌 MySQL  
MySQL 5.5 GA  
MySQL 5.6 Developer  
최신글
mysql Query
mysql 초보입니다…
FULLTEXT 검색 관…
Mysql 리플리케이…
table crash 관련…
 
MySQL5.5.x Performance Schema
글쓴이 : royster   날짜 : 11-10-13 09:18   조회수 : 6900

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.