Maison >base de données >tutoriel mysql >Explication détaillée de PACK_KEYS dans MySQL

Explication détaillée de PACK_KEYS dans MySQL

黄舟
黄舟original
2017-03-04 14:57:001390parcourir

Dans le moteur myisam de MySQL, il y en a un qui est facile à ignorer, appelé index compressé PACK_KEYS

myISAM utilise la compression de préfixe pour réduire la taille de l'index. Par défaut, les chaînes seront compressées et les entiers. peut également être compressé.

Vous pouvez utiliser PACK_KEYS pour contrôler la méthode de compression d'index lors de l'utilisation de la création de table.

PACK_KEYS est décrit dans le manuel MySQL comme suit :

Définissez cette option sur 1 si vous souhaitez que l'index soit plus petit. Cela ralentit généralement les mises à jour et accélère la lecture. Définir l’option sur 0 désactive toute compression de mots clés. Lorsque cette option est définie sur DEFAULT, le moteur de stockage compresse uniquement les longues colonnes CHAR ou VARCHAR (MyISAM uniquement).

Si vous n'utilisez pas PACK_KEYS, l'action par défaut consiste à compresser uniquement les chaînes, mais pas les nombres. Si vous utilisez PACK_KEYS=1, les nombres sont également compressés.

Lors de la compression de mots-clés numériques binaires, MySQL utilise la compression de préfixe :

o Chaque mot-clé nécessite un octet supplémentaire pour indiquer combien d'octets dans le mot-clé précédent correspondent au mot-clé suivant est le même.

o Les pointeurs vers les lignes sont stockés après le mot-clé dans l'ordre haut-endian pour améliorer la compression.

Cela signifie que s'il y a plusieurs mots-clés identiques dans deux lignes consécutives, les mots-clés "identiques" suivants n'occuperont généralement que deux octets (y compris le pointeur vers la ligne). En revanche, dans des circonstances normales, les clés suivantes occupent storage_size_for_key pointer_size (la taille du pointeur est généralement de 4). Toutefois, la compression des préfixes n’est bénéfique que si de nombreux nombres sont identiques. Si tous les mots-clés sont complètement différents et que les mots-clés ne peuvent pas contenir de valeurs NULL, un octet supplémentaire sera utilisé pour chaque mot-clé. (Dans ce cas, l'octet qui stocke la longueur du mot-clé compressé est le même octet utilisé pour indiquer si le mot-clé est NULL.

Par exemple, il existe un champ pour enregistrer le nom du fichier, tel que " abc.pdf", où le pdf est le même pour tout le monde, vous pouvez donc

utiliser un index compressé basé sur ce champ :

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;

Ce qui précède est l'explication détaillée de PACK_KEYS dans mysql, plus Pour le contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn)


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn