• 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 및 파일 영역 관리
    1. InnoDB 디스크 I/O
    2. 파일 공간 관리
    3. InnoDB 체크 포인트
    4. 테이블의 조각
    5. TRUNCATE TABLE에 의한 디스크 공간의 재사용
    11. InnoDB와 온라인 DDL
    12. InnoDB 부팅 옵션 및 시스템 변수
    13. InnoDB의 성능
    14. 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.10.2 파일 공간 관리

구성 파일에서 정의하는 데이터 파일은 InnoDB 시스템 테이블 스페이스 가 형성됩니다. 이러한 파일은 테이블 공간을 형성하기 위해 논리적으로 연결됩니다. 스트라이핑은 사용되지 않습니다. 현재 테이블 스페이스 내의 어디에 테이블이 분할하는 방법을 정의 할 수 없습니다. 새로 만들어진 테이블 공간은 InnoDB 는 첫 번째 데이터 파일에서 영역을 할당합니다.

시스템 테이블 공간의 내부에 모든 테이블 및 인덱스를 저장하여 발생하는 문제를 해결하기 위해 innodb_file_per_table 구성 옵션을 선택 할 수 있습니다. 이 옵션은 새로 작성된 각 테이블을 별도의 테이블 공간 파일에 (확장자 .ibd 에서) 저장합니다. 이 방법으로 저장된 테이블의 경우 디스크 파일 조각화는 감소하고 테이블이 절단되면, 그 영역은 InnoDB에 의해 계속 시스템 테이블 스페이스에 예약되는 것이 아니라 운영 체제에 반환됩니다 .

페이지, 익스텐트, 세그먼트 및 테이블 공간

각 테이블 스페이스는 데이터베이스 페이지 로 구성되어 있습니다. MySQL 인스턴스의 테이블 스페이스는 동일한 페이지 크기 를 가지고 있습니다. 기본적으로 모든 테이블 스페이스가 16K 바이트의 페이지 크기를 가지고 있습니다. 이 페이지 크기를 8K 바이트 또는 4K 바이트 줄이기 위해 MySQL 인스턴스를 만들 때 innodb_page_size 옵션을 지정합니다.

이 페이지는 크기 1M 바이트의 범위 (연속 된 64 개의 16K 바이트 페이지 128 개의 8K 바이트 페이지 또는 256 개의 4K 바이트 페이지)에 그룹화됩니다. InnoDB 는 테이블 스페이스 내부의 "파일"을 세그먼트 라고합니다. (이러한 세그먼트는 실제로 다수의 테이블 스페이스 세그먼트가 포함되어있는 롤백 세그먼트 는 다릅니다.)

세그먼트가 테이블 스페이스 내부에서 확장되는 경우, InnoDB 는 그 세그먼트에 처음 32 페이지를 한 번에 할당합니다. 그 후, InnoDB 는 그 세그먼트에 대한 모든 익스텐트 할당을 시작합니다. InnoDB 는 데이터의 좋은 연속성을 보장하기 위해 큰 세그먼트는 1 번에 최대 4 개의 익스텐트를 추가 할 수 있습니다.

InnoDB 는 각 인덱스에 2 개의 세그먼트가 할당됩니다. 하나는 B 트리의 리프가 아닌 노드 용이고 다른 하나는 리프 노드입니다. 리프 노드를 디스크에서 연속적인 상태로 유지하면 이러한 리프 노드는 실제 테이블 데이터가 포함되어 있기 때문에 순차 I / O 작업의 성능이 향상됩니다.

테이블 공간의 일부 페이지는 다른 페이지의 비트 맵이 포함되어 있기 때문에 InnoDB 테이블 스페이스 내의 일부 범위는 전체가 아닌 개별 페이지로만 세그먼트에 할당 할 수 있습니다 .

SHOW TABLE STATUS 명령문을 실행하여 테이블 공간에서 사용 가능한 공간을 구하면, InnoDB 는 테이블 스페이스 내의 확실히 빈 익스텐트를보고합니다. InnoDB 는 항상 어떤 범위를 정리 및 기타 내부 목적을 위해 예약합니다. 이 예약 된 범위는 공간에 포함되지 않습니다.

테이블에서 데이터를 삭제하면 InnoDB 는 해당 B 트리 인덱스를 짧게합니다. 해방 된 영역을 다른 사용자가 사용할 수있게 될지 어떨지는 삭제 패턴 테이블 스페이스에 대해 개별 페이지 또는 범위 중을 해제할지에 따라 다릅니다. 테이블을 삭제하거나 테이블의 모든 행을 삭제하거나하면 그 영역은 확실히 다른 사용자에게 공개되지만, 그 삭제 된 행은 그 행이 트랜잭션 롤백 또는 일관성 읽기 필요 없어진 뒤, 잠시 후 자동으로 발생하는 퍼지 조작에 의해서만 물리적으로 제거되는 점에 유의하십시오. ( 섹션 14.2.12 "InnoDB 멀티 버전" 을 참조하십시오.)

테이블 공간에 대한 정보를 표시하려면 테이블 스페이스 모니터를 사용합니다. 섹션 14.15 "InnoDB 모니터" 를 참조하십시오.

페이지 테이블 행에 연결

가변 길이 컬럼 ​​( VARBINARY , VARCHAR , BLOB 및 TEXT )을 제외하고 행의 최대 길이는 데이터베이스 페이지의 절반보다 조금 짧아집니다. 즉, 행의 최대 길이는 8000 바이트입니다. LONGBLOB 및 LONGTEXT 컬럼은 4G 바이트 미만이어야, BLOB 및 TEXT 컬럼을 포함하는 행 전체 길이는 4G 바이트 미만이어야합니다.

줄의 길이가 한 페이지의 절반보다 짧은 경우는 행 전체가 그 페이지 내에 로컬로 저장됩니다. 그것이 1 페이지의 절반이 넘는 경우 행이 1 페이지의 절반에 고정 될 때까지 외부 오프 페이지 스토리지로 가변 길이 컬럼이 선택됩니다. 오프 페이지 스토리지로 선택된 컬럼의 경우, InnoDB 는 첫 번째 768 바이트 행에 로컬로 저장하고 나머지는 외부 오버 플로우 페이지에 저장합니다. 이러한 각 열에는 오버 플로우 페이지의 자신의 목록이 있습니다. 768 바이트의 프리픽스는 그 컬럼의 실제 길이를 저장하고 값의 나머지 부분이 포함되어 오버 플로우 페이지 목록을 가리키는 20 바이트의 값이 수반합니다


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