Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Überspringen Sie das Kopieren in die tmp-Tabelle auf der Festplatte mysql

Es gibt zwei Dinge, die Sie tun können, um die Auswirkungen dadurch zu verringern

OPTION #1 :Erhöhen Sie die Variablen tmp_table_size und/oder max_heap_table_size

Diese Optionen bestimmen, wie groß eine temporäre In-Memory-Tabelle sein kann, bevor sie als zu groß erachtet wird und dann als temporäre MyISAM-Tabelle auf die Festplatte ausgelagert wird. Je größer diese Werte sind, desto unwahrscheinlicher ist die Meldung „Kopieren in die tmp-Tabelle auf der Festplatte“. Bitte stellen Sie sicher, dass Ihr Server über genügend RAM und max_connections ist moderat konfiguriert, falls eine einzelne DB-Verbindung viel RAM für ihre eigenen temporären Tabellen benötigt.

OPTION #2 :Verwenden Sie eine RAM-Disk für tmp-Tabellen

Sie sollten in der Lage sein, eine RAM-Disk unter Linux zu konfigurieren und dann die tmpdir in mysql der Ordner, in dem die RAM-Disk gemountet ist.

Konfigurieren Sie zunächst eine RAM-Disk im Betriebssystem

Erstellen Sie unter Linux einen Ordner mit dem Namen /var/tmpfs

mkdir /var/tmpfs

Fügen Sie als Nächstes diese Zeile zu /etc/fstab hinzu (wenn Sie beispielsweise eine 16-GB-RAM-Festplatte wünschen)

none                    /var/tmpfs              tmpfs   defaults,size=16g        1 2

und starten Sie den Server neu.

Hinweis:Es ist möglich, eine RAM-Disk ohne Neustart zu erstellen. Denken Sie nur daran, die oben erwähnte Zeile zu /etc/fstab hinzuzufügen, um die RAM-Disk nach einem Server-Neustart zu haben.

Nun zu MySQL:

Fügen Sie diese Zeile in /etc/my.cnf

hinzu
[mysqld]
tmpdir=/var/tmpfs

und mysql neu starten.

OPTION #3:Holen Sie sich die tmp-Tabelle so schnell wie möglich in die RAM-Disk (vorausgesetzt, Sie wenden zuerst OPTION #2 an)

Möglicherweise möchten Sie tmp-Tabellen so schnell wie möglich in die RAM-Disk zwingen, damit MySQL nicht seine Räder dreht, wenn große In-Memory-tmp-Tabellen in eine RAM-Disk migriert werden. Fügen Sie dies einfach zu /etc/my.cnf hinzu:

[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K

und starten Sie mysql neu. Dadurch wird selbst die kleinste temporäre Tabelle direkt in der RAM-Disk erstellt. Sie könnten regelmäßig ls -l /var/tmpfs ausführen temporäre Tische kommen und gehen zu sehen.

Probieren Sie es aus !!!

ACHTUNG

Wenn Sie rund um die Uhr nur temporäre Tabellen in /var/tmpfs sehen, kann dies die Funktionalität/Leistung des Betriebssystems beeinträchtigen. Um sicherzustellen, dass /var/tmpfs nicht überfüllt wird, sollten Sie Ihre Abfragen optimieren. Sobald Sie dies getan haben, sollten Sie weniger tmp-Tabellen in /var/tmpfs sehen.