• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 1. InnoDB 소개
    2. InnoDB의 개념과 아키텍처
    3. InnoDB 구성
    4. InnoDB 관리
    5. InnoDB 테이블 스페이스 관리
    6. InnoDB 테이블 관리
    7. InnoDB 압축 테이블
    8. InnoDB 파일 형식 관리
    9. InnoDB Row Storage and Row Formats
    10. InnoDB 디스크 I/O 및 파일 영역 관리
    11. InnoDB와 온라인 DDL
    12. InnoDB 부팅 옵션 및 시스템 변수
    13. InnoDB의 성능
    14. InnoDB INFORMATION_SCHEMA 테이블
    1. 압축에 관한 InnoDB INFORMATION_SCHEMA테이블
    2. InnoDB INFORMATION_SCHEMA 트랜잭션과 잠금 테이블
    3. InnoDB INFORMATION_SCHEMA 시스템 테이블
    4. InnoDB INFORMATION_SCHEMA FULLTEXT 인덱스 테이블
    5. InnoDB INFORMATION_SCHEMA 버퍼풀 테이블
    6. InnoDB INFORMATION_SCHEMA 메트릭 테이블
    15. InnoDB 모니터
    16. InnoDB 백업 및 복구
    17. InnoDB와 MySQL 복제
    18. InnoDB 및 memcached의 통합
    19. InnoDB 문제 해결
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

14.14.5 InnoDB INFORMATION_SCHEMA 버퍼풀 테이블

InnoDB INFORMATION_SCHEMA 버퍼 풀 테이블은 버퍼 풀의 상태 정보 및 InnoDB 버퍼 풀의 페이지에 대한 메타 데이터를 제공합니다. 이 테이블은 MySQL 5.6.2,에서 도입되고 나중에 MySQL 5.5 (MySQL 5.5.28) 및 MySQL 5.1 (MySQL 5.1.66)으로 백 포트되었습니다.

InnoDB INFORMATION_SCHEMA 버퍼 풀 테이블은 아래에 나열되어있는 것이 포함됩니다.

mysql> SHOW TABLES FROM INFORMATION_SCHEMA LIKE 'INNODB_BUFFER%';
+-----------------------------------------------+
| Tables_in_INFORMATION_SCHEMA (INNODB_BUFFER%) |
+-----------------------------------------------+
| INNODB_BUFFER_PAGE_LRU                        |
| INNODB_BUFFER_PAGE                            |
| INNODB_BUFFER_POOL_STATS                      |
+-----------------------------------------------+
3 rows in set (0.00 sec)

테이블의 개요

  • INNODB_BUFFER_PAGE : InnoDB 버퍼 풀의 각 페이지에 대한 정보를 유지합니다.

  • INNODB_BUFFER_PAGE_LRU : InnoDB 버퍼 풀의 페이지에 대한 정보, 특히 꽉 찬 경우 버퍼 풀에서 어떤 페이지를 삭제할지 여부를 결정하는 LRU리스트의 각 페이지의 순서를 유지합니다. INNODB_BUFFER_PAGE_LRU 테이블에는 INNODB_BUFFER_PAGE 테이블과 같은 열이 있습니다 만, INNODB_BUFFER_PAGE_LRU 테이블에는 BLOCK_ID 컬럼이 아닌 LRU_POSITION 열이있는 점이 다릅니다.

  • INNODB_BUFFER_POOL_STATS : 버퍼 풀의 상태 정보를 제공합니다. 같은 정보의 대부분은 SHOW ENGINE INNODB STATUS 출력에서 제공되거나 또는 InnoDB 버퍼 풀의 서버 상태 변수를 사용하여 얻을 수 있습니다.

경고

INNODB_BUFFER_PAGE 테이블 또는 INNODB_BUFFER_PAGE_LRU 테이블의 쿼리는 상당한 성능 오버 헤드가 도입 될 수 있습니다. 쿼리에 의해 발생할 수있는 성능에 미치는 영향을 인식하고 또한 그것이 허용 가능하다고 판단하지 않는 한, 이러한 테이블을 운영 시스템에서는 쿼리하지 마십시오. 성능에 미치는 영향을 방지하기 위해 조사하려고하고있는 문제를 테스트 인스턴스로 재현 테스트 인스턴스에서 쿼리를 실행하십시오.

예 14.17 INNODB_BUFFER_PAGE 테이블의 시스템 데이터 쿼리

이 쿼리는 TABLE_NAME 값이 NULL 인지, 혹은 그 테이블 이름에 슬래시 " / "또는 마침표" . "를 포함 (이것은 사용자 정의 테이블을 나타냅니다) 페이지를 제외하여 시스템 데이터를 포함 페이지의 근사치를 제공합니다.

SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE 
WHERE TABLE_NAME IS NULL OR (INSTR(TABLE_NAME, '/') = 0 AND INSTR(TABLE_NAME, '.') = 0);
+----------+
| COUNT(*) |
+----------+
|     1320 |
+----------+
1 row in set (0.12 sec)

이 쿼리는 시스템 데이터를 포함하는 페이지의 개수 버퍼 풀 페이지 수 및 시스템 데이터가 포함 된 페이지의 대략적인 비율 (%)을 반환합니다.

SELECT  
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE 
WHERE TABLE_NAME IS NULL OR (INSTR(TABLE_NAME, '/') = 0 AND INSTR(TABLE_NAME, '.') = 0)
) AS system_pages,
(
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
) AS total_pages,
(
SELECT ROUND((system_pages/total_pages) * 100)
) AS system_page_percentage;
+--------------+-------------+------------------------+
| system_pages | total_pages | system_page_percentage |
+--------------+-------------+------------------------+
|         1320 |        8192 |                     16 |
+--------------+-------------+------------------------+
1 row in set (0.15 sec)

버퍼 풀의 시스템 데이터 유형은 PAGE_TYPE 값을 쿼리하여 확인할 수 있습니다. 예를 들어, 다음 쿼리는 시스템 데이터를 포함하는 페이지 간의 8 개의 개별 PAGE_TYPE 값을 반환합니다.

mysql> SELECT DISTINCT PAGE_TYPE FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE 
WHERE TABLE_NAME IS NULL OR (INSTR(TABLE_NAME, '/') = 0 AND INSTR(TABLE_NAME, '.') = 0);
+-------------------+
| PAGE_TYPE         |
+-------------------+
| SYSTEM            |
| IBUF_BITMAP       |
| UNDO_LOG          |
| UNKNOWN           |
| FILE_SPACE_HEADER |
| INODE             |
| ALLOCATED         |
| TRX_SYSTEM        |
+-------------------+
8 rows in set (0.05 sec)

예 14.18 INNODB_BUFFER_PAGE 테이블에서 사용자 데이터 쿼리

이 쿼리는 TABLE_NAME 값이 NOT NULL 과 NOT LIKE '%INNODB_SYS_TABLES%' 인 페이지를 카운트하여 사용자 데이터를 포함하는 페이지의 근사치를 제공합니다.

mysql> SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE 
WHERE TABLE_NAME IS NOT NULL AND TABLE_NAME NOT LIKE '%INNODB_SYS_TABLES%';
+----------+
| COUNT(*) |
+----------+
|     6872 |
+----------+
1 row in set (0.06 sec)

이 쿼리는 사용자 데이터를 포함하는 페이지의 개수 버퍼 풀 페이지 수 및 사용자 데이터가 포함 된 페이지의 대략적인 비율 (%)을 반환합니다.

mysql> SELECT  
(SELECT COUNT(*) FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE 
WHERE TABLE_NAME IS NOT NULL AND (INSTR(TABLE_NAME, '/') > 0 OR INSTR(TABLE_NAME, '.') > 0)
) AS user_pages,
(
SELECT COUNT(*)
FROM information_schema.INNODB_BUFFER_PAGE
) AS total_pages,
(
SELECT ROUND((user_pages/total_pages) * 100)
) AS user_page_percentage;
+------------+-------------+----------------------+
| user_pages | total_pages | user_page_percentage |
+------------+-------------+----------------------+
|       6872 |        8192 |                   84 |
+------------+-------------+----------------------+
1 row in set (0.08 sec)

이 쿼리는 버퍼 풀의 페이지를 포함하는 사용자 정의 테이블을 식별합니다.

mysql> SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE 
WHERE TABLE_NAME IS NOT NULL AND (INSTR(TABLE_NAME, '/') > 0 OR INSTR(TABLE_NAME, '.') > 0) 
AND TABLE_NAME NOT LIKE '`mysql`.`innodb_%';
+-------------------------+
| TABLE_NAME              |
+-------------------------+
| `employees`.`salaries`  |
| `employees`.`employees` |
+-------------------------+
2 rows in set (0.09 sec)

예 14.19 INNODB_BUFFER_PAGE 테이블의 인덱스 데이터 쿼리

인덱스 페이지에 대한 정보를 얻으려면 해당 인덱스의 이름을 사용하여 INDEX_NAME 컬럼을 쿼리합니다. 예를 들어, 다음 쿼리는 employees.salaries 테이블에 정의되어있는 emp_no 인덱스 페이지 수와 페이지의 총 데이터 크기를 반환합니다.

mysql> SELECT INDEX_NAME, COUNT(*) AS Pages, 
ROUND(SUM(IF(COMPRESSED_SIZE = 0, @@global.innodb_page_size, COMPRESSED_SIZE))/1024/1024) 
AS 'Total Data (MB)' 
FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE 
WHERE INDEX_NAME='emp_no' AND TABLE_NAME = '`employees`.`salaries`';
+------------+-------+-----------------+
| INDEX_NAME | Pages | Total Data (MB) |
+------------+-------+-----------------+
| emp_no     |  1756 |              27 |
+------------+-------+-----------------+
1 row in set (0.07 sec)

이 쿼리는 employees.salaries 테이블에 정의 된 모든 인덱스의 페이지 수와 페이지의 총 데이터 크기를 반환합니다.

mysql> SELECT INDEX_NAME, COUNT(*) AS Pages,
ROUND(SUM(IF(COMPRESSED_SIZE = 0, @@global.innodb_page_size, COMPRESSED_SIZE))/1024/1024) 
AS 'Total Data (MB)'
FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE
WHERE TABLE_NAME = '`employees`.`salaries`'
GROUP BY INDEX_NAME;
+------------+-------+-----------------+
| INDEX_NAME | Pages | Total Data (MB) |
+------------+-------+-----------------+
| emp_no     |  1756 |              27 |
| PRIMARY    |  4838 |              76 |
+------------+-------+-----------------+
2 rows in set (0.12 sec)

예 14.20 INNODB_BUFFER_PAGE_LRU 테이블의 LRU_POSITION 데이터 쿼리

INNODB_BUFFER_PAGE_LRU 테이블은 InnoDB 버퍼 풀의 페이지에 대한 정보, 특히 꽉 찬 경우 버퍼 풀에서 어떤 페이지를 삭제할지 여부를 결정하는 각 페이지의 순서를 유지하고 있습니다. 이 페이지의 정의는이 테이블에 BLOCK_ID 컬럼 대신 LRU_POSITION 열이있는 것을 제외하고 INNODB_BUFFER_PAGE 의 경우와 동일합니다.

이 쿼리는 employees.employees 테이블의 각 페이지에 의해 점령 된 LRU 목록의 특정 위치에있는 위치의 수를 계산합니다.

mysql> SELECT COUNT(LRU_POSITION) FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU 
WHERE TABLE_NAME='`employees`.`employees`' AND LRU_POSITION < 3072;
+---------------------+
| COUNT(LRU_POSITION) |
+---------------------+
|                 275 |
+---------------------+
1 row in set (0.04 sec)

예 14.21 INNODB_BUFFER_POOL_STATS 테이블 쿼리

INNODB_BUFFER_POOL_STATS 테이블은 SHOW ENGINE INNODB STATUS 및 InnoDB 버퍼 풀의 상태 변수와 같은 정보를 제공합니다.

  mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS \ G
 *************************** 1. row ******************** *******
                          POOL_ID : 0
                        POOL_SIZE : 8192
                     FREE_BUFFERS : 1024
                   DATABASE_PAGES : 7029
               OLD_DATABASE_PAGES : 2574
          MODIFIED_DATABASE_PAGES : 0
               PENDING_DECOMPRESS : 0
                    PENDING_READS : 0
                PENDING_FLUSH_LRU : 0
               PENDING_FLUSH_LIST : 0
                 PAGES_MADE_YOUNG : 173
             PAGES_NOT_MADE_YOUNG : 3721891
            PAGES_MADE_YOUNG_RATE : 0
        PAGES_MADE_NOT_YOUNG_RATE : 0
                NUMBER_PAGES_READ : 1075
             NUMBER_PAGES_CREATED : 12594
             NUMBER_PAGES_WRITTEN : 13525
                  PAGES_READ_RATE : 0
                PAGES_CREATE_RATE : 0
               PAGES_WRITTEN_RATE : 0
                 NUMBER_PAGES_GET : 27873240
                         HIT_RATE : 0
     YOUNG_MAKE_PER_THOUSAND_GETS : 0
 NOT_YOUNG_MAKE_PER_THOUSAND_GETS : 0
          NUMBER_PAGES_READ_AHEAD : 576
        NUMBER_READ_AHEAD_EVICTED : 0
                  READ_AHEAD_RATE : 0
          READ_AHEAD_EVICTED_RATE : 0
                     LRU_IO_TOTAL : 0
                   LRU_IO_CURRENT : 0
                 UNCOMPRESS_TOTAL : 0
               UNCOMPRESS_CURRENT : 0
 1 row in set (0.00 sec) 

비교를 위해 동일한 데이터 세트에 근거한 SHOW ENGINE INNODB STATUS 출력 및 InnoDB 버퍼 풀의 상태 변수의 출력을 보여줍니다.

SHOW ENGINE INNODB STATUS 출력의 자세한 내용은 섹션 14.15.3 "InnoDB 표준 모니터 및 잠금 모니터 출력" 을 참조하십시오.

  mysql> SHOW ENGINE INNODB STATUS \ G
 ...
 ----------------------
 BUFFER POOL AND MEMORY
 ----------------------
 Total memory allocated 137363456; in additional pool allocated 0
 Dictionary memory allocated 99725
 Buffer pool size 8192
 Free buffers 1024
 Database pages 7029
 Old database pages 2574
 Modified db pages 0
 Pending reads 0
 Pending writes : LRU 0, flush list 0, single page 0
 Pages made young 173 not young 3721891
 0.00 youngs / s, 0.00 non-youngs / s
 Pages read 1075, created 12594, written 13525
 0.00 reads / s, 0.00 creates / s, 0.00 writes / s
 No buffer pool page gets since the last printout
 Pages read ahead 0.00 / s, evicted without access 0.00 / s, Random read ahead 0.00 / s
 LRU len : 7029, unzip_LRU len : 0
 I / O sum [0] : cur [0], unzip sum [0] : cur [0]
 ... 

상태 변수에 대한 설명은 섹션 5.1.6 "서버 상태 변수" 를 참조하십시오.

mysql> SHOW STATUS LIKE 'Innodb_buffer%';
+---------------------------------------+-------------+
| Variable_name                         | Value       |
+---------------------------------------+-------------+
| Innodb_buffer_pool_dump_status        | not started |
| Innodb_buffer_pool_load_status        | not started |
| Innodb_buffer_pool_pages_data         | 7029        |
| Innodb_buffer_pool_bytes_data         | 115163136   |
| Innodb_buffer_pool_pages_dirty        | 0           |
| Innodb_buffer_pool_bytes_dirty        | 0           |
| Innodb_buffer_pool_pages_flushed      | 13525       |
| Innodb_buffer_pool_pages_free         | 1024        |
| Innodb_buffer_pool_pages_misc         | 139         |
| Innodb_buffer_pool_pages_total        | 8192        |
| Innodb_buffer_pool_read_ahead_rnd     | 0           |
| Innodb_buffer_pool_read_ahead         | 576         |
| Innodb_buffer_pool_read_ahead_evicted | 0           |
| Innodb_buffer_pool_read_requests      | 27873240    |
| Innodb_buffer_pool_reads              | 500         |
| Innodb_buffer_pool_wait_free          | 0           |
| Innodb_buffer_pool_write_requests     | 11966441    |
+---------------------------------------+-------------+
17 rows in set (0.00 sec) 


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved