MySQL-Datenbankoperationen
Verwenden Sie diese Fähigkeit für MySQL-spezifische Schema-, Abfrage-, Indexierungs-, Transaktions- und Betriebsaufgaben. Stellen Sie die tatsächliche Serverversion, den SQL-Modus, die Speicher-Engine, das Zeichensatz/Collation, die Topologie und die Umgebung fest, bevor Sie sich auf versionsabhängiges Verhalten verlassen.
Vor der Abfrage entdecken
Bevorzugen Sie Repository-Migrationen, Schemadefinitionen, ORM-Zuordnungen und schreibgeschützte Metadatenabfragen. Bestätigen Sie die Tabellengranularität, Primär- und Unique-Keys, Fremdschlüssel, NULL-Zulässigkeit, generierte Spalten, Partitionen, Indizes, Datenvolumen und Beziehungen. Leiten Sie keine physischen Spaltennamen aus Anwendungsfeldern ab.
Schützen Sie Anmeldedaten und Zeilendaten. Geben Sie niemals Verbindungszeichenfolgen, Geheimnisse, vollständige Kundendatensätze oder unnötige persönliche Daten aus. Verwenden Sie das Konto mit den geringsten Berechtigungen und eine Nicht-Produktions- oder Read-Replica, wenn dies die Aufgabe erfüllt.
Korrekte, begrenzte Abfragen schreiben
- Wählen Sie benannte Spalten anstelle von
SELECT *, wenn der Vertrag bekannt ist. - Verwenden Sie typisierte Parameter für Werte; verketten Sie niemals nicht vertrauenswürdige Eingaben in SQL-Bezeichner oder -Ausdrücke.
- Machen Sie die Join-Kardinalität explizit und prüfen Sie vor der Aggregation auf Multiplikation.
- Gehen Sie bewusst mit
NULL, Zeitzonen, Collationen, Genauigkeit und inklusiven/exklusiven Zeitgrenzen um. - Fügen Sie eine deterministische Sortierung für Paginierung oder wiederholbare Extrakte hinzu. Bevorzugen Sie Keyset-Paginierung für große, veränderliche Mengen, wenn anwendbar.
- Begrenzen Sie explorative Lesevorgänge mit selektiven Prädikaten und einem Limit, fügen Sie jedoch kein Limit hinzu, das eine erforderliche Aggregat- oder Vollständigkeitsgarantie stillschweigend ändert.
Validieren Sie Ergebnisse mit Zählungen, Nennern, Randfällen und einer unabhängigen Berechnung, wo die Entscheidung wesentlich ist.
Leistung sicher analysieren
Verwenden Sie den am wenigsten invasiven verfügbaren Planbefehl. Bevorzugen Sie EXPLAIN oder dokumentierte, nicht ausführende Formate; verwenden Sie EXPLAIN ANALYZE nur, wenn die Ausführung der Anweisung und ihre Arbeitslast autorisiert und begrenzt ist. Überprüfen Sie geschätzte gegenüber tatsächlichen Zeilen, Zugriffstyp, gewählte und mögliche Schlüssel, Join-Reihenfolge, temporäre Tabellen, Sortierung, Abdeckungsverhalten und Prädikatselektivität.
Ein Index ist ein Kompromiss. Bewerten Sie Spaltenreihenfolge, Gleichheits-/Bereichsprädikate, Sortierung, Abdeckungsanforderungen, Präfixlänge, Schreibverstärkung, Speicher, Sperr-/Erstellungsverhalten, redundante Indizes und die tatsächliche Arbeitslasthäufigkeit. Behaupten Sie nicht, dass jeder Filter oder jede Join-Spalte einen eigenen Index benötigt.
Mutationen und Transaktionen kontrollieren
Bestätigen Sie vor INSERT, UPDATE, DELETE, DDL, Sperren, Wartung, Replikation oder Konfigurationsänderungen die Zielumgebung, die Schätzung der betroffenen Zeilen, die Autorisierung, das Transaktions-/Sperrverhalten, den Backup- oder Rollback-Pfad und die beobachtbaren Stoppbedingungen. Zeigen Sie nach Möglichkeit die genaue Zielmenge mit einer schreibgeschützten Abfrage in der Vorschau an.
Verwenden Sie Transaktionen entsprechend der tatsächlichen Engine und Operation; gehen Sie nicht davon aus, dass alle DDL- oder externen Effekte zurückgesetzt werden. Halten Sie Transaktionen kurz, verwenden Sie stabile Prädikate, überprüfen Sie das Deadlock-/Wiederholungsverhalten und bestätigen Sie die betroffenen Zeilen vor dem Commit. Verwenden Sie für Schema-/Datenmigrationen einen schrittweisen Kompatibilitätsansatz anstelle von destruktiven Änderungen vor Ort.
Führen Sie niemals Produktionsmutationen aus, erstellen/löschen Sie Indizes, ändern Sie Benutzer oder Berechtigungen, verändern Sie die Replikation, beenden Sie Sitzungen oder ändern Sie die Serverkonfiguration ohne ausdrückliche Autorisierung für diese Operation und Umgebung.
Übergabe
Geben Sie den SQL- oder Änderungsplan, Annahmen, Schema-/Versionsnachweise, Parameter, erwartete Kardinalität, Planergebnisse, Sicherheitsgrenze und Überprüfungsschritte zurück. Wenn die Ausführung autorisiert war, schließen Sie Umgebung, Zeitstempel, betroffene Zeilen, Transaktionsergebnis, Vorher-/Nachher-Nachweise, Restrisiko und Wiederherstellungszustand ein. Ein erfolgreicher Befehl reicht nicht aus; überprüfen Sie die angeforderten Daten oder das Betriebsergebnis.