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 중국어 홈페이지(m.sbmmt.com)를 주목해주세요