Heim  >  Artikel  >  Datenbank  >  Detaillierte Erklärung von PACK_KEYS in MySQL

Detaillierte Erklärung von PACK_KEYS in MySQL

黄舟
黄舟Original
2017-03-04 14:57:001336Durchsuche

In der Myisam-Engine von MySQL gibt es einen, der leicht zu ignorieren ist, nämlich den komprimierten Index PACK_KEYS.

MyISAM verwendet die Präfixkomprimierung, um die Indexgröße zu reduzieren kann auch komprimiert werden.

Sie können PACK_KEYS verwenden, um die Indexkomprimierungsmethode zu steuern, wenn Sie die Tabelle erstellen verwenden.

PACK_KEYS wird im MySQL-Handbuch wie folgt beschrieben:

Setzen Sie diese Option auf 1, wenn der Index kleiner sein soll. Dadurch werden Aktualisierungen normalerweise langsamer und das Lesen schneller. Wenn Sie die Option auf 0 setzen, wird die gesamte Schlüsselwortkomprimierung deaktiviert. Wenn diese Option auf DEFAULT gesetzt ist, komprimiert die Speicher-Engine nur lange CHAR- oder VARCHAR-Spalten (nur MyISAM).

Wenn Sie PACK_KEYS nicht verwenden, besteht die Standardaktion darin, nur Zeichenfolgen, aber keine Zahlen zu komprimieren. Wenn Sie PACK_KEYS=1 verwenden, werden auch Zahlen komprimiert.

Beim Komprimieren binärer numerischer Schlüsselwörter verwendet MySQL die Präfixkomprimierung:

o Jedes Schlüsselwort erfordert ein zusätzliches Byte, um anzugeben, wie viele Bytes im vorherigen Schlüsselwort dem nächsten Schlüsselwort entsprechen.

o Zeiger auf Zeilen werden nach dem Schlüsselwort in High-Endian-Reihenfolge gespeichert, um die Komprimierung zu verbessern.

Das bedeutet, dass bei vielen identischen Schlüsselwörtern in zwei aufeinanderfolgenden Zeilen nachfolgende „identische“ Schlüsselwörter normalerweise nur zwei Bytes belegen (einschließlich des Zeigers auf die Zeile). Im Gegensatz dazu belegen nachfolgende Schlüssel unter normalen Umständen storage_size_for_key + pointer_size (die Zeigergröße beträgt normalerweise 4). Allerdings ist die Präfixkomprimierung nur dann von Vorteil, wenn viele Nummern identisch sind. Wenn alle Schlüsselwörter völlig unterschiedlich sind und Schlüsselwörter keine NULL-Werte enthalten dürfen, wird für jedes Schlüsselwort ein weiteres Byte verwendet. (In diesem Fall ist das Byte, das die Länge des komprimierten Schlüsselworts speichert, dasselbe Byte, das verwendet wird, um zu markieren, ob das Schlüsselwort NULL ist.

Zum Beispiel gibt es ein Feld zum Speichern des Dateinamens, z. B. „ abc.pdf“, wobei das PDF für alle gleich ist, sodass Sie

einen komprimierten Index basierend auf diesem Feld verwenden können:

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;

Oben finden Sie die detaillierte Erklärung von PACK_KEYS in MySQL, mehr Für verwandte Inhalte achten Sie bitte auf die chinesische PHP-Website (www.php.cn)


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn