Heim >Datenbank >MySQL-Tutorial >Wie optimiert man MySQL-Abfragen für die Rückgabe großer Datenmengen?

Wie optimiert man MySQL-Abfragen für die Rückgabe großer Datenmengen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-10 06:19:021085Durchsuche

How to Optimize MySQL Queries for Large Data Returns?

Optimale MySQL-Einstellungen für Abfragen, die große Datenmengen liefern

Frage:

Wie kann ich MySQL-Abfragen optimieren, die zurückgegeben werden? eine große Anzahl von Datensätzen (in diesem Fall etwa 50 Millionen), was zu längeren Ausführungszeiten führt?

Antwort:

Passen Sie MySQL für Ihre Engine an

  • Überprüfen Sie die Serverkonfiguration und passen Sie die Einstellungen entsprechend an.
  • Machen Sie sich mit Ressourcen vertraut wie:

    • http://www.mysqlperformanceblog. com/
    • http://forge.mysql.com/wiki/ServerVariables
  • Erwägen Sie die Verwendung einer gespeicherten Prozedur zur serverseitigen Verarbeitung von Daten, um die Notwendigkeit einer Übertragung zu reduzieren große Datensätze auf die Anwendungsebene übertragen.

Erwägen Sie die Verwendung der InnoDB-Engine

  • InnoDB bietet Clustered-Indizes, die möglicherweise die Leistung verbessern, indem Zeilendaten darauf gespeichert werden Seite als Indexsuche.
  • Erstellen Sie einen zusammengesetzten Primärschlüssel einschließlich der Indexfelder, um den Zugriff zu optimieren. Beachten Sie, dass Sie AUTO_INCREMENT nicht mit zusammengesetzten Schlüsseln in InnoDB verwenden können.

Divide and Conquer

  • Daten in Stapeln mithilfe einer gespeicherten Prozedur zurückgeben, die Ihnen dies ermöglicht um einen Wertebereich für ein Schlüsselfeld anzugeben (z. B. df_low und df_high).
  • Verwenden Sie in der Anwendungsschicht Multithreading oder eine Schleife, um die Daten in überschaubaren Blöcken abzurufen und zu verarbeiten.

Zusätzliche Optimierungen

Erkunden Sie zusätzlich zu den oben genannten Vorschlägen diese Ressourcen für weitere Leistungsverbesserungen:

  • http://www.jasny .net/?p=36
  • http://jpipes.com/presentations/perf_tuning_best_practices.pdf

Spezifisches Beispiel für die Verwendung der gespeicherten InnoDB-Prozedur

Das folgende Beispiel zeigt, wie Sie die Leistung mithilfe einer gespeicherten InnoDB-Prozedur und einer C#-Anwendung mit mehreren Threads verbessern können:

  1. Erstellen Sie eine gespeicherte Prozedur, um Daten in Stapeln abzurufen:

    create procedure list_results_innodb(
        in p_rc tinyint unsigned,
        in p_df_low int unsigned,
        in p_df_high int unsigned
    )
    begin
        select rc, df, id from results_innodb where rc = p_rc and df between p_df_low and p_df_high;
    end
  2. Entwickeln Sie eine C#-Anwendung, die die gespeicherte Prozedur aufruft und die Ergebnisse einer Sammlung zur Verarbeitung nach der Abfrage hinzufügt.
  3. Verwenden Sie mehrere Threads, um gleichzeitig verschiedene Datenstapel abzurufen.

Indem Sie diese Schritte befolgen, können Sie die Ausführungszeit für große Datenabfragen in MySQL erheblich verkürzen.

Das obige ist der detaillierte Inhalt vonWie optimiert man MySQL-Abfragen für die Rückgabe großer Datenmengen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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