Er zijn twee dingen die u kunt doen om de impact hierdoor te verminderen
OPTIE #1:Verhoog de variabelen tmp_table_size en/of max_heap_table_size
Deze opties bepalen hoe groot een tijdelijke tabel in het geheugen kan zijn voordat deze als te groot wordt beschouwd en vervolgens pagina's naar schijf als een tijdelijke MyISAM-tabel. Hoe groter deze waarden zijn, hoe kleiner de kans dat u 'kopiëren naar tmp-tabel op schijf' krijgt. Zorg ervoor dat uw server voldoende RAM heeft en max_connections is matig geconfigureerd als een enkele DB-verbinding veel RAM nodig heeft voor zijn eigen tijdelijke tabellen.
OPTIE #2:Gebruik een RAM-schijf voor tmp-tabellen
U zou in Linux een RAM-schijf moeten kunnen configureren en vervolgens de tmpdir in mysql om de map te zijn waarin de RAM-schijf is gemount.
Configureer om te beginnen een RAM-schijf in het besturingssysteem
Maak een map in Linux genaamd /var/tmpfs
mkdir /var/tmpfs
Voeg vervolgens deze regel toe aan /etc/fstab (bijvoorbeeld als u een 16GB RAM-schijf wilt)
none /var/tmpfs tmpfs defaults,size=16g 1 2
en start de server opnieuw op.
Let op:Het is mogelijk om een RAM-schijf te maken zonder opnieuw op te starten. Vergeet niet om de bovengenoemde regel nog steeds toe te voegen aan /etc/fstab om de RAM-schijf te hebben na een herstart van de server.
Nu voor MySQL:
Voeg deze regel toe in /etc/my.cnf
[mysqld]
tmpdir=/var/tmpfs
en herstart mysql.
OPTIE #3:haal de tmp-tabel zo snel mogelijk naar de RAM-schijf (ervan uitgaande dat u eerst OPTIE #2 toepast)
Misschien wilt u tmp-tabellen zo snel mogelijk in de RAM-schijf forceren, zodat MySQL niet doordraait bij het migreren van grote tmp-tabellen in het geheugen naar een RAM-schijf. Voeg dit gewoon toe aan /etc/my.cnf:
[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K
en herstart mysql. Dit zorgt ervoor dat zelfs de kleinste tijdelijke tabel in de RAM-schijf tot stand wordt gebracht. U kunt periodiek ls -l /var/tmpfs
. uitvoeren om tijdelijke tafels te zien komen en gaan.
Probeer het eens !!!
WAARSCHUWING
Als u alleen maar tijdelijke tabellen in /var/tmpfs 24/7 ziet, kan dit de functionaliteit/prestaties van het besturingssysteem beïnvloeden. Om ervoor te zorgen dat /var/tmpfs niet overbevolkt raakt, kun je je zoekopdrachten afstemmen. Als je dat eenmaal hebt gedaan, zou je minder tmp-tabellen moeten zien verschijnen in /var/tmpfs.