Zusammenfassung der MySQL-Nutzungsspezifikationen

Zusammenfassung der MySQL-Nutzungsspezifikationen

1. Es muss die InnoDB-Speicher-Engine verwendet werden

Es bietet eine bessere CPU- und IO-Leistung, bessere Sicherungs- und Tabellensperrmechanismen sowie eine verbesserte Statistik- und Debugging-Effizienz.

Darüber hinaus unterstützt InnoDB als System eine Reihe wichtiger Funktionen, von denen die Transaktionsprotokollierung und die Zeilensperre die wichtigsten sind. Das Transaktionsprotokoll zeichnet die tatsächlichen Datenbanktransaktionen auf, aber – noch wichtiger – die Wiederherstellung und das Rollback nach einem Datenabsturz.

Auf InooDB basierende IO kann einen sichereren Datenschutz und eine bessere Leistung bieten. Darüber hinaus kann durch die Sperrung auf Zeilenebene in den meisten Fällen eine höhere Parallelitätsleistung erreicht werden, da Benutzer nur die Daten sperren, die sie schreiben, und das Lesen von Daten nie blockiert wird.

2. Datentabellen und Datenfeldern müssen chinesische Kommentare hinzugefügt werden

Für Neueinsteiger ist es in Zukunft einfacher, es zu verstehen und sich schneller damit vertraut zu machen, und es ist leichter lesbar. Gleichzeitig wird das Statusfeld mit Aufzählungswerten wie 0 für Löschen und 1 für Normal gekennzeichnet.

3. Der Zeichensatz UTF8mb4 muss verwendet werden

UTF8 ist ein universeller Zeichensatz. MB4 ist eine Erweiterung von UTF8 und unterstützt neue Zeichen wie Emoji.

4. Verbieten Sie die Verwendung gespeicherter Prozeduren, Ansichten, Trigger, Ereignisse, Verknüpfungen usw.

Bei hoch parallelen Big-Data-Internetdiensten besteht die architektonische Designidee darin, „die Datenbank-CPU freizugeben und die Berechnung auf die Serviceebene zu übertragen.“ Datenbanken sind gut für die Speicherung und Indizierung geeignet, und die CPU-Berechnung ist auf der Geschäftsebene sinnvoller.

5. Speichern Sie keine großen Dateien oder Fotos

Wenn viele Fotos von Personen vorhanden sind, verlangsamt sich die Abfragegeschwindigkeit der Seiten erheblich. Früher wurde innerhalb von 1 Sekunde geantwortet, aber nach dem Hinzufügen des Fotofelds dauert die Antwort etwa 4 bis 5 Sekunden.
Große Dateien und Fotos werden im Dateisystem gespeichert. Es ist besser, URIs in der Datenbank zu speichern.

6. Die Tabelle muss einen Primärschlüssel haben, z. B. einen Auto-Increment-Primärschlüssel

a) Durch Inkrementieren des Primärschlüssels und Schreiben von Datenzeilen kann die Einfügeleistung verbessert, eine Seitenaufteilung vermieden, die Tabellenfragmentierung verringert und die Speicherplatz- und Speichernutzung verbessert werden.
b) Verwenden Sie numerische Primärschlüssel. Kürzere Datentypen können den Speicherplatz des Index effektiv reduzieren und die Cache-Effizienz des Index verbessern.
c) Das Löschen einer Tabelle ohne Primärschlüssel führt dazu, dass die Standby-Datenbank in einer Master-Slave-Architektur im ROW-Modus blockiert wird.
d) Die häufigere Verwendung geschäftlicher Primärschlüssel erleichtert die Aufteilung von Datenbanken und Tabellen.

7. Fremdschlüssel sind verboten. Wenn Integritätsbeschränkungen für Fremdschlüssel bestehen, ist eine Anwendungskontrolle erforderlich.

Fremdschlüssel verursachen eine Kopplung zwischen Tabellen. Aktualisierungs- und Löschvorgänge betreffen verwandte Tabellen, was die SQL-Leistung erheblich beeinträchtigt und sogar zu Deadlocks führen kann.

8. Das Feld muss als NOT NULL definiert sein und ein Standardwert muss angegeben werden

a) Spalten mit Nullwerten machen Indizes/Indexstatistiken/Wertevergleiche komplizierter und für MySQL schwieriger zu optimieren.
b) Null Dieser Datentyp muss in MySQL speziell verarbeitet werden, was die Komplexität der Datenbankdatensatzverarbeitung erhöht. Unter den gleichen Bedingungen wird die Datenbankverarbeitungsleistung erheblich reduziert, wenn die Tabelle viele leere Felder enthält.
c) Nullwerte erfordern mehr Speicherplatz. Unabhängig davon, ob es sich um eine Tabelle oder einen Index handelt, benötigt jede Zeile in der Nullspalte zusätzlichen Speicherplatz, um sie zu identifizieren.
d) Beim Umgang mit Null kann nur „ist null“ oder „ist nicht null“ verwendet werden und die Operationssymbole wie =, in, <, <>, != und nicht in können nicht verwendet werden.

Beispiel: wobei „Name!“ = „nx“. Wenn Datensätze vorhanden sind, bei denen „Name“ Null ist, enthalten die Abfrageergebnisse keine Datensätze, bei denen „Name“ Null ist.

9. Verwenden Sie keine TEXT- und BLOB-Typen

Dadurch wird mehr Festplatten- und Speicherplatz verschwendet. Unnötige Abfragen großer Felder eliminieren Hot Data, was zu einem starken Rückgang der Speichertrefferrate führt und die Datenbankleistung beeinträchtigt.

10. Verwenden Sie keine Dezimalzahlen zur Speicherung von Währungen

Verwenden Sie ganze Zahlen, da es bei Dezimalzahlen leicht passieren kann, dass der Betrag nicht übereinstimmt.

11. Sie müssen varchar(20) verwenden, um Mobiltelefonnummern zu speichern

a) Bei Ortsvorwahlen oder Ländervorwahlen kann +-() erscheinen
b) Können mit Mobiltelefonnummern mathematische Operationen durchgeführt werden?
c) VARCHAR kann Fuzzy-Abfragen unterstützen, zum Beispiel: wie „138 %“

12. ENUM ist verboten, stattdessen kann TINYINT verwendet werden

a) Das Hinzufügen neuer ENUM-Werte erfordert DDL-Operationen
b) Der eigentliche interne Speicher von ENUM besteht aus Ganzzahlen. Dachten Sie, Sie hätten einen String definiert?

13. Über das Indexdesign

(1) Es wird empfohlen, die Anzahl der Indizes in einer einzelnen Tabelle auf weniger als 5 zu begrenzen.

Mehr Indizes sind nicht immer besser! Indizes können die Effizienz steigern, aber auch verringern.

Indizes können die Abfrageeffizienz steigern, sie können jedoch auch die Effizienz von Einfügungen und Aktualisierungen und in manchen Fällen sogar die Abfrageeffizienz verringern.

Denn wenn der MySQL-Optimierer entscheidet, wie eine Abfrage optimiert werden soll, wertet er jeden verfügbaren Index anhand vereinheitlichter Informationen aus, um den besten Ausführungsplan zu generieren. Wenn viele Indizes gleichzeitig für Abfragen verwendet werden können, erhöht dies die Zeit, die der MySQL-Optimierer zum Generieren eines Ausführungsplans benötigt, und verringert auch die Abfrageleistung.

(2) Erstellen Sie keine Indizes für Attribute, die sehr häufig aktualisiert werden und eine geringe Differenzierung aufweisen.

a) Durch Updates wird der B+-Baum geändert und die Indizierung häufig aktualisierter Felder verringert die Datenbankleistung erheblich.
b) Für Attribute wie „Geschlecht“, die nicht sehr diskriminierend sind, ist es sinnlos, einen Index zu erstellen. Dadurch können Daten nicht effektiv gefiltert werden und die Leistung ist ähnlich der eines vollständigen Tabellenscans.

(3) Bei der Erstellung eines zusammengesetzten Indexes müssen die Felder mit hoher Trennschärfe an den Anfang gestellt werden.

Grund: Kann Daten effektiver filtern

14. Informationen zu SQL-Verwendungsspezifikationen

(1) INSERT INTO t_xxx VALUES(xxx) ist nicht zulässig. Die einzufügenden Spaltenattribute müssen angegeben werden.

Grund: Nach dem Hinzufügen oder Löschen von Feldern können leicht Programmfehler auftreten.

(2) Es ist verboten, Funktionen oder Ausdrücke auf Attribute von WHERE-Bedingungen anzuwenden.

Grund: SELECT uid FROM t_user WHERE from_unixtime(day)>='2019-10-09' führt zu einem vollständigen Tabellenscan. Die korrekte Schreibweise lautet: SELECT uid FROM t_user WHERE day>= unix_timestamp('2019-10-09 00:00:00')

(3) Negative Anfragen und Fuzzy-Anfragen, die mit % beginnen, sind verboten

Grund:
a) Negative Abfragebedingungen: NOT, !=, <>, !<, !>, NOT IN, NOT LIKE usw. führen zu einem vollständigen Tabellenscan
b) Fuzzy-Abfragen, die mit % beginnen, führen zu einem vollständigen Tabellenscan

(4) JOIN-Abfragen und Unterabfragen sind für große Tabellen verboten.

Grund: Es werden temporäre Tabellen generiert, mehr Speicher und CPU verbraucht und die Datenbankleistung stark beeinträchtigt

(5) ODER-Bedingungen sind verboten und müssen in IN-Abfragen geändert werden.

Grund: OR-Abfragen in alten MySQL-Versionen können den Index nicht erreichen. Selbst wenn sie den Index erreichen können, warum sollte die Datenbank mehr CPU verbrauchen, um die Abfrageoptimierung zu implementieren?

(6) Die Anwendung muss SQL-Ausnahmen erfassen und entsprechend behandeln

Oben finden Sie den detaillierten Inhalt der Zusammenfassung der MySQL-Nutzungsspezifikationen. Weitere Informationen zu MySQL-Nutzungsspezifikationen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Äußerst detaillierte Freigabe der MySQL-Nutzungsspezifikation
  • Zusammenfassung der MySQL-Datenbanknutzungsspezifikationen
  • Eine erfahrene Person zeigt Ihnen, wie Sie ein professionelles und standardisiertes MySQL-Startskript entwickeln
  • Zusammenfassung der MySQL-Entwicklungsstandards und -Nutzungskenntnisse
  • MySQL-Datenbank-Entwicklungsspezifikationen [empfohlen]
  • Benennungsstandards und Konventionen für MySQL-Datenbanken
  • Detaillierte Erläuterung der MySQL-Tabellenerstellung und der Indexnutzungsspezifikationen
  • Benennung und Designspezifikationen für MySQL-Datenbanken
  • Professionelle MySQL-Entwicklungsdesignspezifikationen und SQL-Schreibspezifikationen

<<:  Codebeispiel für die Implementierung des Linux-Verzeichniswechsels

>>:  Dieser Artikel hilft Ihnen, den Lebenszyklus in Vue zu verstehen

Artikel empfehlen

Beispielanalyse der Auswirkungen des MySQL-Index auf die Sortierung

Dieser Artikel veranschaulicht anhand von Beispie...

Uniapps Erfahrung in der Entwicklung kleiner Programme

1. Erstellen Sie ein neues UI-Projekt Zunächst ei...

MySQL 5.7.17 neuestes Installationstutorial mit Bildern und Text

mysql-5.7.17-winx64 ist die neueste Version von M...

SQL-Fuzzy-Abfragebericht: ORA-00909: Lösung: Ungültige Anzahl von Parametern

Bei Verwendung einer Oracle-Datenbank für Fuzzy-A...

Vue3.0 verwendet das Plug-In vue-grid-layout, um Drag-Layout zu implementieren

Inhaltsverzeichnis 1. Plugins 2. Zwischenspiel 3....

Detaillierte Erläuterung des Vue-Router-Routings

Inhaltsverzeichnis 1. Grundlegende Verwendung 2. ...

So erstellen Sie Ihre erste React-Seite

Inhaltsverzeichnis Was ist Rract? Hintergrund Rea...

Erstellen der Benutzererfahrung

<br />Vielleicht sind Sie gerade in ein Unte...

Vier Möglichkeiten, CSS und HTML zu kombinieren

(1) Jedes HTML-Tag hat ein Attribut style, das CS...

MySQL Null kann 5 Probleme verursachen (alle schwerwiegend)

Inhaltsverzeichnis 1. Zähldaten gehen verloren Lö...

CSS Transition erweitert und reduziert Elemente durch Ändern der Höhe

Ein allgemeines Entwicklungsbedürfnis besteht dar...