MySQL unterstützt viele Datentypen und die Auswahl des richtigen Datentyps ist für eine hohe Leistung von entscheidender Bedeutung. Hier sind ein paar einfache Grundsätze, die Ihnen dabei helfen, bessere Entscheidungen zu treffen.
Sie sollten versuchen, den kleinsten Datentyp zu verwenden, der die Daten korrekt speichern kann. Kleinere Datentypen sind im Allgemeinen schneller, da sie weniger Festplatte, Speicher und CPU-Cache beanspruchen und für die Verarbeitung weniger CPU-Zyklen benötigen. Wenn Sie nicht sicher sind, welcher Datentyp am besten ist, wählen Sie den kleinsten Typ, von dem Sie meinen, dass er den Bereich nicht überschreitet.
Operationen an einfachen Datentypen erfordern im Allgemeinen weniger CPU-Zyklen. Beispielsweise sind Ganzzahloperationen günstiger als Zeichenoperationen, da Zeichenvergleiche aufgrund von Zeichensätzen und Sortierungen komplizierter sind als Ganzzahlvergleiche. Verwenden Sie beispielsweise die integrierten Typen von MySQL anstelle von Zeichenfolgen zum Speichern von Datums- und Uhrzeitangaben und Ganzzahlen zum Speichern von IP-Adressen.
Abfragen mit nullbaren Spalten sind für MySQL schwieriger zu optimieren, da nullbare Spalten Indizes, Indexstatistiken und Wertevergleiche komplizierter machen. Nullable-Spalten benötigen mehr Speicherplatz und erfordern eine spezielle Behandlung in MySQL. Beim Indexieren einer Spalte mit Nullwerten ist für jeden Indexdatensatz ein zusätzliches Byte erforderlich. In MyISAM kann dies sogar dazu führen, dass aus einem Index mit fester Größe ein Index mit variabler Größe wird. Im Allgemeinen ist die Leistungsverbesserung durch die Änderung einer Spalte mit Nullwerten in eine Spalte ungleich Null gering. Es besteht daher keine Notwendigkeit, diese Situation in einem vorhandenen Schema zu finden und zu beheben, es sei denn, Sie sind sicher, dass sie Probleme verursachen wird. Die Ausnahme besteht darin, dass InnoDB ein separates Bit zum Speichern von Nullwerten verwendet, sodass es eine gute Speichereffizienz für spärliche Daten aufweist (viele Werte sind Null und nur wenige Zeilen haben nicht-Null-Werte in der Spalte). Dies gilt jedoch nicht für MyISAM.
Ganzzahltypen Diese Typen können zum Speichern von Ganzzahlen verwendet werden
Sie können Werte im Bereich von -2^(N-1)^ bis 2^(N-1)^-1 speichern, wobei N die Anzahl der Bits des Speicherplatzes ist. MySQL wählt verschiedene Ganzzahltypen aus, um zu bestimmen, wie Daten im Speicher und auf der Festplatte gespeichert werden. Bei Ganzzahlberechnungen werden jedoch im Allgemeinen 64-Bit-Bigint-Ganzzahlen verwendet, selbst in 32-Bit-Umgebungen. (außer Aggregatfunktionen) MySQL ermöglicht Ihnen auch, Breiten für Integer-Typen anzugeben. Wie int(11), aber es begrenzt nicht den zulässigen Wertebereich, sondern gibt nur die Anzahl der Zeichen an, die von einigen interaktiven MySQL-Tools (wie SQLyog, Navicat) zur Anzeige verwendet werden. Für Speicher- und Berechnungszwecke sind int(1) und int(11) identisch. Reelle Zahlentypen Reelle Zahlen sind Zahlen mit einem Bruchteil. In MySQL können Decimal, Float und Double zum Speichern von reellen Zahlentypen verwendet werden. Die Typen „Float“ und „Double“ unterstützen Näherungsberechnungen mit standardmäßiger Gleitkommaarithmetik. Gleitkommatypen benötigen im Allgemeinen weniger Speicherplatz als Dezimaltypen, um denselben Wertebereich zu speichern. Float verwendet 4 Bytes zur Speicherung und Double verwendet 8 Bytes zur Speicherung, was eine höhere Präzision und einen größeren Bereich als Float bietet. Bei Gleitkommaberechnungen verwendet MySQL „double“ als internen Gleitkommaberechnungstyp. Wenn Sie genaue Berechnungen mit Dezimalzahlen durchführen möchten, verwenden Sie decimal (z. B. bei Finanzdaten). Bei großen Datenmengen können Sie jedoch auch bigint anstelle von decimal verwenden und die Währungseinheit speichern, indem Sie die Anzahl der Dezimalstellen mit demselben Vielfachen multiplizieren. Dadurch kann der hohe Aufwand für die Dezimalberechnung vermieden werden. Float und Double verwenden native Gleitkommaberechnungen, die von der CPU unterstützt werden, und sind daher schnell. Zeichenfolgentyp VARCHAR und CHAR sind die beiden wichtigsten Zeichenfolgentypen. varchar Der Typ varchar wird zum Speichern von Zeichenfolgen variabler Länge verwendet und ist der am häufigsten verwendete Zeichenfolgendatentyp. Es ist platzsparender als Typen mit fester Länge, da es nur den nötigen Platz nutzt. VARCHAR erfordert ein oder zwei zusätzliche Bytes zum Aufzeichnen der Zeichenfolgenlänge: Wenn die maximale Länge der Spalte kleiner oder gleich 255 Bytes ist, wird nur ein Byte verwendet, andernfalls werden zwei Bytes verwendet. VARCHAR spart Speicherplatz und trägt somit auch zur Leistung bei. Da die Zeilenlänge jedoch variabel ist, kann eine Aktualisierung dazu führen, dass die Zeile länger als zuvor wird, was zusätzlichen Arbeitsaufwand bedeutet. Denn der von der Zeile belegte Platz wird größer und auf der Seite ist kein Platz mehr vorhanden, um sie zu speichern. In diesem Fall teilt MyISAM die Zeile zur Speicherung in verschiedene Fragmente auf und InnoDB muss die Seite aufteilen, damit die Zeile auf die Seite passt. Bei einigen anderen Speicher-Engines werden die Daten möglicherweise nicht direkt aktualisiert. Die geeignetsten Szenarien für die Verwendung von varchar sind: wenn die maximale Länge der Zeichenfolgenspalte viel größer als die durchschnittliche Länge ist; wenn die Spalte selten aktualisiert wird (Fragmentierung ist kein Problem); und wenn ein komplexer Zeichensatz wie UTF-8 verwendet wird, bei dem jedes Zeichen mit einer anderen Anzahl von Bytes gespeichert wird. Der Speicherplatzbedarf zum Speichern von „Hallo“ mit varchar(5) und varchar(200) ist derselbe, aber die Verwendung einer längeren Spalte verbraucht mehr Speicher. MySQL weist normalerweise einen Speicherblock fester Größe zu, um interne Werte zu speichern. Dies ist insbesondere dann problematisch, wenn im Arbeitsspeicher gespeicherte temporäre Tabellen zum Sortieren oder Bearbeiten verwendet werden. Ebenso problematisch ist es, wenn zum Sortieren temporäre Tabellen auf der Festplatte verwendet werden. Die beste Strategie besteht daher darin, nur den Speicherplatz zuzuweisen, den Sie wirklich benötigen. verkohlen Der Zeichentyp hat eine feste Länge. MySQL reserviert immer genügend Speicherplatz für die definierte Zeichenfolgenlänge. Beim Speichern von Zeichenwerten entfernt MySQL alle nachstehenden Leerzeichen. Char-Werte werden nach Bedarf mit Leerzeichen aufgefüllt, um den Vergleich zu erleichtern. char eignet sich zum Speichern sehr kurzer Zeichenfolgen oder wenn alle Werte nahezu gleich lang sind. Beispielsweise der MD5-Wert eines Passwortes. Bei Daten, die sich häufig ändern, ist char auch besser als varchar, da bei char mit fester Länge die Wahrscheinlichkeit einer Fragmentierung geringer ist. Bei sehr kurzen Spalten ist char auch speicherplatzsparender als varchar, da varchar ein zusätzliches Byte für die Datensatzlänge benötigt. Oben sind die Details der Prinzipien der MySQL-Datentypoptimierung aufgeführt. Weitere Informationen zur MySQL-Datentypoptimierung finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
Umweltvorbereitung: Stellen Sie lnmp auf einem Ho...
Um eine große Anzahl gleichzeitiger Besuche bewäl...
ScreenCloud ist eine tolle kleine App, von der Si...
Vor Kurzem habe ich mit der Aktualisierung meines ...
Inhaltsverzeichnis Einführung Ideen Erstellen ein...
Inhaltsverzeichnis getApp() Definieren Sie Variab...
vue-router hat zwei Modi Hash-Modus Verlaufsmodus...
Möglicherweise haben Sie gerade ein MySQL-Passwor...
Inhaltsverzeichnis Was ist das Beobachtermuster? ...
Titel: Vue verwendet Vue-Meta-Info, um den Titel ...
1. Klicken Sie mit der rechten Maustaste auf das ...
Inhaltsverzeichnis Einführung 1. Fallübersicht 2....
Die Optimierung großer Datenbankdatenmengen ist e...
In diesem Artikel wird der spezifische Code von V...
In der neuesten Version von WIN10 hat Microsoft e...