Vorwort Sie erhalten möglicherweise häufig Warn-E-Mails von Sicherheitsabteilungen zu SQL-Injection, XSS-Angriffsschwachstellen usw., und gelegentlich wird Ihr Computer von Hackern gehackt. Ist das nicht frustrierend? Die Ausführung der Datenbank ist zu langsam (erfahrungsgemäß liegt dies hauptsächlich an der falschen Verwendung von Indizes). Folgen wir dem Editor und sehen uns die 11 häufigsten Fehler von MySQL-Neulingen an. 1. Verwenden Sie MyISAM anstelle von InnoDB MySQL verfügt über viele Datenbank-Engines, aber im Allgemeinen werden MyISAM und InnoDB verwendet. Standardmäßig wird MyISAM verwendet. Wenn Sie jedoch nicht gerade eine sehr einfache Datenbank einrichten oder nur experimentieren, ist dies meistens die falsche Wahl. MyISAM unterstützt keine Fremdschlüsseleinschränkungen, was für die Gewährleistung der Datenintegrität von entscheidender Bedeutung ist. Darüber hinaus sperrt MyISAM beim Hinzufügen oder Aktualisieren von Daten die gesamte Tabelle, was bei zukünftigen Erweiterungsleistungen zu erheblichen Problemen führen kann. Die Lösung ist einfach: Verwenden Sie InnoDB. 2. Verwenden der MySQL-Methode von PHP PHP hat von Anfang an MySQL-Funktionsbibliotheken bereitgestellt. Viele Programme verlassen sich auf mysql_connect, mysql_query, mysql_fetch_assoc usw., aber Das PHP-Handbuch schlägt vor: Wenn Sie MySQL Version 4.1.3 oder höher verwenden, wird dringend empfohlen, die mysqli-Erweiterung zu verwenden. mysqli oder MySQL Advanced Extensions hat einige Vorteile: Verfügt über eine objektorientierte Schnittstelle vorbereitete Anweisungen (vorverarbeitete Anweisungen können SQL-Injection-Angriffe wirksam verhindern und die Leistung verbessern) Unterstützt mehrere Anweisungen und Transaktionen Wenn Sie darüber hinaus mehrere Datenbanken unterstützen möchten, sollten Sie PDO in Betracht ziehen. 3. Benutzereingaben nicht filtern Es sollte heißen: Vertrauen Sie niemals Benutzereingaben. Verwenden Sie Backend-PHP, um alle Eingabeinformationen zu überprüfen und zu filtern. Vertrauen Sie keinem JAVAscript. SQL-Anweisungen wie die folgenden sind leicht anfällig: $Benutzername = $_POST["Name"]; $password = $_POST["Passwort"]; $sql = "SELECT userid FROM usertable WHERE username='$username'AND password='$password';"; // Abfrage ausführen... Wenn der Benutzer in diesem Code „admin';“ eingibt, entspricht dies dem Folgenden: SELECT Benutzer-ID FROM Benutzertabelle WHERE Benutzername='admin'; Auf diese Weise kann sich der Eindringling als Administrator anmelden, ohne ein Kennwort einzugeben. 4. Keine Verwendung von UTF-8 Benutzer im Vereinigten Königreich und in den USA berücksichtigen Sprachprobleme selten, was dazu führt, dass viele Produkte anderswo nicht verwendet werden können. Es gibt auch einige GBK-codierte, die ebenfalls große Probleme verursachen. UTF-8 löst viele Internationalisierungsprobleme. Obwohl PHP6 dieses Problem perfekter lösen kann, hindert es Sie nicht daran, den MySQL-Zeichensatz auf UTF-8 einzustellen. 5. Verwenden Sie PHP, wo SQL verwendet werden sollte Wenn Sie mit MySQL noch nicht vertraut sind, möchten Sie ein Problem unter Umständen manchmal mit einer Ihnen vertrauten Sprache lösen. Dies kann zu Ausschuss und schlechter Leistung führen. Beispielsweise wird bei der Berechnung des Durchschnitts nicht die native MySQL-Methode AVG() verwendet. Stattdessen werden mit PHP alle Werte in einer Schleife durchlaufen und anschließend addiert, um den Durchschnitt zu berechnen. Seien Sie auch vorsichtig mit der PHP-Schleife innerhalb der SQL-Abfrage. Es ist normalerweise effizienter, die Ergebnisse in PHP zu durchlaufen, nachdem alle Ergebnisse abgerufen wurden. Generell lässt sich sagen, dass der Einsatz leistungsfähiger Datenbankmethoden bei der Verarbeitung großer Datenmengen zu einer Effizienzsteigerung führen kann. 6. Keine Optimierung der Abfragen 99 % der PHP-Leistungsprobleme werden durch die Datenbank verursacht. Eine fehlerhafte SQL-Anweisung kann Ihr gesamtes Programm sehr verlangsamen. Die EXPLAIN-Anweisung von MySQL, der Query Profiler und viele andere Tools können Ihnen dabei helfen, diese fehlerhaften SELECT-Anweisungen zu finden. 7. Verwendung des falschen Datentyps MySQL stellt eine Reihe von Datentypen wie Zahlen, Zeichenfolgen und Zeitangaben zur Verfügung. Wenn Sie Daten speichern möchten, verwenden Sie die Typen DATE oder DATETIME. Die Verwendung von Ganzzahlen oder Zeichenfolgen macht die Sache komplizierter. Manchmal möchten Sie Ihre eigenen Datentypen verwenden, beispielsweise um serialisierte PHP-Objekte in Zeichenfolgen zu speichern. Das Hinzufügen einer Datenbank ist möglicherweise einfach, MySQL wird dann jedoch umständlich und kann später zu Problemen führen. 8. Verwenden Sie * in der SELECT-Abfrage Verwenden Sie nicht *, um alle Felder in einer Tabelle zurückzugeben, da dies sehr langsam wäre. Sie müssen nur die Datenfelder extrahieren, die Sie benötigen. Wenn Sie alle Felder entfernen müssen, muss Ihre Tabelle möglicherweise geändert werden. 9. Unter- oder Überindizierung Generell sollten alle Felder, die in der SELECT-Anweisung nach WHERE erscheinen, indiziert werden. Angenommen, unsere Benutzertabelle hat eine numerische ID (Primärschlüssel) und eine E-Mail-Adresse. Nach der Anmeldung sollte MySQL die entsprechende ID per E-Mail finden. Mithilfe des Index kann MySQL E-Mails über Suchalgorithmen schnell finden. Wenn kein Index vorhanden ist, muss MySQL jeden Datensatz überprüfen, bis es ihn findet. In diesem Fall möchten Sie möglicherweise jedem Feld einen Index hinzufügen. Dies hat jedoch zur Folge, dass beim Aktualisieren oder Hinzufügen der Index neu erstellt wird und bei großen Datenmengen Leistungsprobleme auftreten. Indizieren Sie daher nur die Felder, die Sie benötigen. 10. Keine Sicherungen durchführen Es kommt zwar nicht oft vor, aber Datenbankbeschädigungen, Festplattenausfälle, Diensteausfälle usw. können katastrophale Schäden an Daten verursachen. Achten Sie deshalb stets auf die automatische Sicherung Ihrer Daten bzw. das Anlegen einer Kopie. 11. Außerdem: Andere Datenbanken nicht berücksichtigen MySQL ist möglicherweise die am häufigsten verwendete Datenbank für PHP, aber nicht die einzige Wahl. Konkurrenten sind auch PostgreSQL und Firebird, die beide Open Source sind und nicht von bestimmten Unternehmen kontrolliert werden. Microsoft stellt SQL Server Express bereit, Oracle hat 10g Express und von diesen Enterprise-Level-Versionen gibt es auch kostenlose Versionen. SQLite ist auch für einige kleine oder eingebettete Anwendungen eine gute Wahl. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels jedem beim Erlernen oder Verwenden von MySQL hilfreich sein kann. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Das könnte Sie auch interessieren:
|
<<: Javascript zum Erzielen eines Trommeleffekts
So erstellen Sie einen Dienst und starten ihn aut...
Hintergrund-Threads •Hauptthread Der Kern-Hinterg...
Native js realisiert den Karusselleffekt (nahtlos...
Die Attribute des <TR>-Tags werden verwende...
Vorwort Das einfache Verständnis von MySQL-Berech...
1.1. Herunterladen: Laden Sie das Zip-Paket von d...
In diesem Artikelbeispiel wird der spezifische Co...
Schritt 1: Holen Sie sich die MySQL YUM-Quelle Ge...
In diesem Artikel werden die spezifischen Schritt...
Wir implementieren einen roten Bildstil für die a...
Inhaltsverzeichnis js tiefe Kopie Methode der Dat...
Was ist der Zweck dieses Satzes? Code kopieren Der...
Autor: Guan Changlong ist DBA in der Delivery Ser...
Implementierungsmethode für die MySQL5.7-Master-S...
1. Zeitarten werden unterteilt in: 1. Netzwerkzei...