sql >> Database >  >> RDS >> Mysql

sla kopiëren naar tmp-tabel op schijf over mysql

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.



  1. Preventietriggers

  2. mysqlworkbench geeft een versiefout bij het exporteren van de database

  3. Sqlalchemy bulk-update in MySQL werkt erg traag

  4. Eclipse - voeg .jar toe aan Dynamic Web Project