• 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 압축 테이블
    1. 테이블 압축의 개요
    2. 테이블 압축 사용
    3. InnoDB 테이블의 압축 조정
    4. 런타임 압축 모니터링
    5. InnoDB 테이블에서의 압축 동작
    6. 워크로드의 압축
    7. 압축 구문 경고 및 오류
    8. InnoDB 파일 형식 관리
    9. InnoDB Row Storage and Row Formats
    10. InnoDB 디스크 I/O 및 파일 영역 관리
    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.7.7 SQL 압축 구문 경고 및 오류

Barracuda 파일 형식이 활성화되어 있지 않은 경우, CREATE TABLE 또는 ALTER TABLE 문에서 ROW_FORMAT=COMPRESSED 또는 KEY_BLOCK_SIZE 를 지정하면 다음과 같은 경고가 생성됩니다. SHOW WARNINGS 명령문을 사용하면 이들을 볼 수 있습니다.

레벨 코드 메시지
경고 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
경고 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format=1
경고 1478 InnoDB: ignoring KEY_BLOCK_SIZE= 4 .
경고 1478 InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_per_table.
경고 1478 InnoDB: assuming ROW_FORMAT=COMPACT.

참고 :

  • 기본적으로 이러한 메시지는 오류가 아니라 단순한 경고입니다. 테이블 옵션을 지정하지 않았던 경우와 마찬가지로 압축없이 작성됩니다.

  • innodb_strict_mode 을 사용하면 MySQL에서는 이러한 경우 경고가 아닌 오류가 생성됩니다. 현재 구성에서는 압축 테이블의 사용이 허용되지 않기 때문에 테이블은 생성되지 않습니다.

"엄밀하지 않은"동작을 사용하면 소스 데이터베이스에 압축 테이블이 포함되지 않은 경우에도 압축 테이블이 지원되지 않는 데이터베이스에 mysqldump 파일을 가져올 수 있습니다. 이 경우, MySQL은 작업을 회피하는 대신 ROW_FORMAT=COMPACT 에 테이블을 만듭니다.

새로운 데이터베이스에 덤프 파일을 가져 원본 데이터베이스에 존재 때 테이블이 다시 생성되도록하려면 서버에서 innodb_file_format 및 innodb_file_per_table 구성 매개 변수가 제대로 설정되어 있는지 확인합니다.

KEY_BLOCK_SIZE 속성은 ROW_FORMAT 이 COMPRESSED 로 지정되어 있거나 생략 된 경우에만 허용됩니다. 기타 ROW_FORMAT 함께 KEY_BLOCK_SIZE 을 지정하면 SHOW WARNINGS 을 사용하여 볼 수있는 경고가 생성됩니다. 그러나 테이블은 비 압축입니다. 즉, 지정된 KEY_BLOCK_SIZE 는 무시됩니다.

레벨 코드 메시지
경고 1478 InnoDB: ignoring KEY_BLOCK_SIZE= n unless ROW_FORMAT=COMPRESSED.

innodb_strict_mode 가 활성화되어있는 상태에서 실행하는 경우 COMPRESSED 이외의 ROW_FORMAT 과 KEY_BLOCK_SIZE 을 결합 경고가 아니라 오류가 생성되고, 테이블이 작성되지 않습니다.

표 14.2 "CREATE TABLE 및 ALTER TABLE 옵션의 의미」 에서는 CREATE TABLE 및 ALTER TABLE 에서 다양한 옵션이 처리되는 방법이 요약되어 있습니다.

표 14.2 CREATE TABLE 및 ALTER TABLE 옵션의 의미

옵션 사용법 설명
ROW_FORMAT=​REDUNDANT MySQL 5.0.3 이전에 사용 된 스토리지 포맷 ROW_FORMAT=COMPACT 보다 효율성이 낮고, 하위 호환성을 유지하기위한 것입니다.
ROW_FORMAT=​COMPACT MySQL 5.0.3 이후의 기본 저장 포맷 클러스터 된 인덱스 페이지에 768 바이트의 긴 컬럼 값의 프리픽스가 저장되고 나머지 바이트는 오버 플로우 페이지에 저장됩니다.
ROW_FORMAT=​DYNAMIC innodb_file​_format=Barracuda 함께 만 사용 가능 클러스터 된 인덱스 페이지 내에 들어가는 경우는 그 페이지에 값이 저장됩니다. 맞지 않으면 오버플 페이지에 20 바이트 포인터 만 (프리픽스없이) 저장됩니다.
ROW_FORMAT=​COMPRESSED innodb_file​_format=Barracuda 함께 만 사용 가능 zlib를 사용하여 테이블 및 인덱스를 기본 압축 된 페이지 크기 8K 바이트로 압축합니다. 암묵적으로 ROW_FORMAT=DYNAMIC 를 나타냅니다.
KEY_BLOCK_​SIZE= n innodb_file​_format=Barracuda 함께 만 사용 가능 1,2,4,8 또는 16K 바이트의 압축 된 페이지 크기를 지정합니다. 암묵적으로 ROW_FORMAT=DYNAMIC 및 ROW_FORMAT=COMPRESSED 을 나타냅니다.

표 14.3 "InnoDB 엄격 모드가 꺼져있을 때 CREATE / ALTER TABLE 경고 및 오류 ' 에서는 CREATE TABLE 또는 ALTER TABLE 문에서 구성 매개 변수와 옵션의 특정 조합에서 발생하는 오류 상황 및 옵션 이 SHOW TABLE STATUS 의 출력에 표시되는 방법을 쉽게 설명하고 있습니다.

innodb_strict_mode 가 OFF 의 경우, MySQL에 의해 테이블이 작성 또는 변경되지만, 다음과 같이 특정 설정은 무시됩니다. 경고 메시지는 MySQL 오류 로그에서 확인할 수 있습니다. innodb_strict_mode 가 ON 의 경우 이러한 특정 옵션의 조합에서 오류가 생성되어 테이블 작성 또는 변경되지 않습니다. 오류 상황에 대한 자세한 설명을 보려면 다음과 같이 SHOW ERRORS 문을 발행합니다.

mysql> CREATE TABLE x (id INT PRIMARY KEY, c INT)

-> ENGINE=INNODB KEY_BLOCK_SIZE=33333;

ERROR 1005 (HY000): Can't create table 'test.x' (errno: 1478)

mysql> SHOW ERRORS;
+-------+------+-------------------------------------------+ 
| Level | Code | Message                                   | 
+-------+------+-------------------------------------------+ 
| Error | 1478 | InnoDB: invalid KEY_BLOCK_SIZE=33333.     | 
| Error | 1005 | Can't create table 'test.x' (errno: 1478) | 
+-------+------+-------------------------------------------+ 

 2 rows in set (0.00 sec)

표 14.3 InnoDB 엄격 모드가 꺼져있을 때 CREATE / ALTER TABLE 경고 및 오류

구문 경고 또는 오류 상황 결과적으로 SHOW TABLE STATUS 에 표시되는 ROW_FORMAT
ROW_FORMAT=REDUNDANT 없음 REDUNDANT
ROW_FORMAT=COMPACT 없음 COMPACT
ROW_FORMAT=COMPRESSED 또는 ROW_FORMAT=DYNAMIC 또는 KEY_BLOCK_SIZE 가 지정되어있는 innodb_file_format =Barracuda 와 innodb_file_per_table 모두 활성화되어 있지 않으면 무시됩니다. COMPACT
잘못된 KEY_BLOCK_SIZE (1,2,4,8 또는 16 이외)가 지정되어있는 KEY_BLOCK_SIZE 이 무시됩니다. 요청 된 것, 또는 COMPACT (기본)
ROW_FORMAT=COMPRESSED 및 유효한 KEY_BLOCK_SIZE 가 지정되어있는 없음. 기본 8K가 아닌 지정된 KEY_BLOCK_SIZE 가 사용됩니다. COMPRESSED
REDUNDANT , COMPACT 또는 DYNAMIC 행 형식을 사용하여 KEY_BLOCK_SIZE 가 지정되어있는 KEY_BLOCK_SIZE 이 무시됩니다. REDUNDANT , COMPACT 또는 DYNAMIC
ROW_FORMAT 이 REDUNDANT , COMPACT , DYNAMIC 또는 COMPRESSED 하나가 아니다 MySQL 파서로 인식되는 경우는 무시됩니다. 그렇지 않으면 오류가 발행됩니다. COMPACT 또는 해당 없음

innodb_strict_mode 가 ON 의 경우, MySQL 그럼 잘못된 ROW_FORMAT 또는 KEY_BLOCK_SIZE 매개 변수가 거부됩니다. 이전 버전의 MySQL과의 호환성을 유지하기 위해 엄격 모드는 기본적으로 활성화되어 있지 않습니다. 대신, MySQL은 무시 된 잘못된 파라미터에 대응 한 경고 (에러는 아니다)가 발행됩니다.

SHOW TABLE STATUS 를 사용하여 선택한 KEY_BLOCK_SIZE 을 볼 수 없다는 점에 유의하십시오. SHOW CREATE TABLE 문은 (테이블을 만들 때 무시 된 경우) KEY_BLOCK_SIZE 가 표시됩니다. 테이블의 실제 압축 된 페이지 크기는 MySQL에서는 볼 수 없습니다.

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