>  기사  >  데이터 베이스  >  mysql의 PACK_KEYS에 대한 자세한 설명

mysql의 PACK_KEYS에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-04 14:57:001375검색

mysql의 myisam 엔진에는 압축된 인덱스 PACK_KEYS라는 무시하기 쉬운 것이 있습니다.

myISAM은 인덱스 크기를 줄이기 위해 접두사 압축을 사용하며 기본적으로 문자열은 압축됩니다.

Create Table 사용 시 PACK_KEYS를 사용하여 인덱스 압축 방법을 제어할 수 있습니다.

PACK_KEYS는 MySQL 매뉴얼에 다음과 같이 설명되어 있습니다.

인덱스를 더 작게 하려면 이 옵션을 1로 설정하세요. 그렇게 하면 일반적으로 업데이트 속도가 느려지고 읽기 속도가 빨라집니다. 옵션을 0으로 설정하면 모든 키워드 압축이 비활성화됩니다. 이 옵션을 DEFAULT로 설정하면 스토리지 엔진은 긴 CHAR 또는 VARCHAR 열만 압축합니다(MyISAM만 해당).

PACK_KEYS를 사용하지 않는 경우 기본 작업은 숫자가 아닌 문자열만 압축하는 것입니다. PACK_KEYS=1을 사용하면 숫자도 압축됩니다.

이진 숫자 키워드를 압축할 때 MySQL은 접두사 압축을 사용합니다.

o 각 키워드에는 이전 키워드의 바이트 수를 나타내는 추가 바이트가 필요합니다. 다음 키워드는 동일합니다.

o 행에 대한 포인터는 압축을 개선하기 위해 키워드 뒤에 하이엔디안 순서로 저장됩니다.

즉, 연속된 두 줄에 동일한 키워드가 많이 있는 경우 후속 "동일한" 키워드는 일반적으로 행에 대한 포인터를 포함하여 2바이트만 차지합니다. 대조적으로, 일반적인 상황에서는 후속 키가 Storage_size_for_key + 포인터_크기(포인터 크기는 일반적으로 4)를 차지합니다. 그러나 접두사 압축은 많은 숫자가 동일한 경우에만 유용합니다. 모든 키워드가 완전히 다르고 키워드에 NULL 값을 포함할 수 없는 경우 키워드당 1바이트가 더 사용됩니다. (이 경우 압축된 키워드의 길이를 저장하는 바이트는 키워드가 NULL인지 여부를 표시하는 데 사용된 바이트와 동일합니다.

예를 들어 " abc.pdf", pdf는 모든 사람에게 동일하므로

이 필드를 기반으로 압축된 인덱스를 사용할 수 있습니다:

CREATE  TABLE <TABLE_NAME> (
`id` INT NOT NULL ,
`name` VARCHAR(250) NULL ,
PRIMARY KEY (`id`) )
PACK_KEYS = 1;
ALTER TABLE table_name PACK_KEYS = 1;

위는 mysql의 PACK_KEYS에 대한 자세한 설명입니다. 관련 내용 더 보기 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.