Beim Abfragen einer Tabelle mit ungefähr 50 Millionen Zeilen und einer Indexgröße von 4 GB (Tabellengröße von ungefähr 6 GB) ist ein Problem aufgetreten, das dazu führt, dass der Datenbankserver den Speicher austauscht und sich dramatisch verlangsamt. Ich bin mir ziemlich sicher, dass dies damit zu tun hat, dass die temporäre Tabellengröße überschritten und auf die Festplatte ausgelagert wurde.
Wenn ich meinen Datenbankserver von 32 GB RAM auf 64 GB RAM aufgerüstet habe, frage ich mich, ob die MySQL-Datenbank diesen zusätzlichen Speicher voll ausnutzen und nicht austauschen kann. Ich habe einige der Variablen durchgesehen (z. B. KEY_BUFFER_SIZE usw.) und sie scheinen das Festlegen von Werten über 64 GB zu unterstützen. In der MySQL-Dokumentation heißt es jedoch, dass die maximale Größe von tmp_table_size 4 GB beträgt.
Würde sich das Speicher-Upgrade also lohnen? Würde das "Abfragen großer Tabellen" -Problem davon profitieren, oder würde es aufgrund der Beschränkung auf 4 GB nicht helfen? Ich weiß, dass es möglicherweise andere Lösungen gibt, z. B. die Umstrukturierung der Tabelle, die auf unterschiedliche Weise partitioniert werden soll, usw. ... Aber würde zusätzlicher Speicher helfen, ohne etwas an der Tabelle zu ändern?
Gibt es im Allgemeinen auch andere speicherbezogene Variablen, die MySQL beim Wechsel von 32 auf 64 GB RAM nicht nutzen könnte?
Wir verwenden 64bit Linux (Ubuntu) als Datenbankserver.
Danke, Galen
Vielleicht lohnt es sich, etwas mehr Zeit und Mühe in die Erforschung der Ursachen des Systemtauschs zu investieren, bevor Sie Geld für Speicher ausgeben.
Bei 32 GB Arbeitsspeicher bleibt auch nach dem Laden der gesamten Tabelle, des Index und der maximalen temp_table genügend Arbeitsspeicher verfügbar. Bei einer kurzen Suche wurden diese beiden Dokumente angezeigt, die möglicherweise relevant sind:
quelle
Wenn Sie der Meinung sind, dass eine sehr große temporäre Tabelle erstellt wurde, sollten Sie überlegen, wie Sie die Abfrage verbessern können, um temporäre Tabellen zu vermeiden.
Sie können auf Stackoverflow einen Beitrag veröffentlichen, der das Schema, die Abfrage, den EXPLAIN-Plan und einige Details zum Problem enthält.
quelle