• 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 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 1. 스토리지 엔진 설정
    2. MyISAM 스토리지 엔진
    1. MyISAM 시작 옵션
    2. Key에 필요한 용량
    3. MyISAM 테이블 스토리지 포맷
    1. Static (고정 길이) 테이블의 특징
    2. Dynamic 테이블의 특징
    3. 압축 테이블의 특징
    4. MyISAM 테이블의 문제점
    3. MEMORY 스토리지 엔진
    4. CSV 스토리지 엔진
    5. ARCHIVE 스토리지 엔진
    6. BLACKHOLE 스토리지 엔진
    7. MERGE 스토리지 엔진
    8. FEDERATED 스토리지 엔진
    9. EXAMPLE 스토리지 엔진
    10. 다른 스토리지 엔진
    11. MySQL 스토리지 엔진 아키텍처 개요
  • 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 새로운 기능

15.2.3.2 Dynamic 테이블의 특징

MyISAM 테이블이 가변 길이 컬럼을 포함하는 경우 ( VARCHAR , VARBINARY , BLOB 또는 TEXT ) 또는 테이블이 ROW_FORMAT=DYNAMIC 테이블 옵션으로 생성 된 경우, 동적 스토리지 포맷이 사용됩니다.

동적 포맷은 각 행에 행의 길이를 나타내는 헤더가 있기 때문에 정적 형식보다 조금 복잡합니다. 업데이트의 결과로 줄이 길어진 경우 행이 분할 될 수 있습니다 (비 연속적인 조각으로 저장됩니다).

OPTIMIZE TABLE 또는 myisamchk -r을 사용하여 테이블을 조각 모음 할 수 있습니다. 가변 길이 컬럼이 포함 된 테이블에서 고정 길이 컬럼에 자주 액세스하거나 변경할 경우 가변 길이 컬럼을 다른 테이블로 이동하여 단편화를 방지하는 방법이 좋은 경우가 있습니다.

동적 형식의 테이블에는 다음과 같은 특징이 있습니다.

  • 길이가 4 미만의 컬럼을 제외한 모든 문자열 컬럼은 동적입니다.

  • 각 행의 시작은 어느 컬럼이 빈 문자열 (문자열 컬럼의 경우) 또는 0 (숫자 컬럼의 경우)를 포함 여부를 나타내는 비트 맵이 붙어 있습니다. 여기에는 NULL 값을 포함한 컬럼이 포함되어 있지 않습니다. 후행 공백을 제거한 후 문자열 컬럼의 길이가 제로이거나 숫자 컬럼의 값이 제로이거나하면 비트 맵에서 표시가 있지만 디스크에 저장되지 않습니다. 비어 있지 않은 문자열은 길이 바이트 문자열 내용을 추가하고 저장됩니다.

  • 보통 고정 길이 테이블과 비교하면 필요한 디스크 공간이 훨씬 적습니다.

  • 각 행은 필요한 용량 만 사용합니다. 그러나 행이 더 커지면 필요한 몇 조각으로 분할 된 행의 단편화가 발생하게됩니다. 예를 들어, 행의 길이를 연장하는 정보를 사용하여 행을 업데이트하면 줄은 단편화됩니다. 이러한 경우 성능을 높이기 위해 가끔 OPTIMIZE TABLE 또는 myisamchk -r을 실행해야 안 될지도 모릅니다. myisamchk -ei를 사용하여 테이블의 통계를 가져옵니다.

  • 행이 여러 조각으로 분할되어 있거나 링크 (단편)가 없어지고있는 경우가 있기 때문에 충돌 후 다시 정적 형식 테이블보다 어렵습니다.

  • 동적 크기의 행의 예상 유키나가는 다음과 같이 계산됩니다.

     3
     + ( number of columns + 7) / 8
     + ( number of char columns )
     + ( packed size of numeric columns )
     + ( length of strings )
     + ( number of NULL columns + 7) / 8
    

    각각의 링크는 6 바이트의 페널티가 있습니다. 업데이트에 의해 행이 확대되는 경우에는 반드시 동적 라인이 연결됩니다. 새로운 링크는 각각 최소 20 바이트이므로 아마도 다음의 확장은 같은 링크입니다. 그렇지 않은 경우 다른 링크가 생성됩니다. myisamchk -ed를 이용하여 링크 수를 확인할 수 있습니다. OPTIMIZE TABLE 또는 myisamchk -r을 사용하면 모든 링크를 삭제할 수 있습니다.


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