sql >> Database teknologi >  >> RDS >> Mysql

spring over at kopiere til tmp-tabel på disk mysql

Der er to ting, du kan gøre for at mindske virkningen af ​​dette

MULIGHED #1:Forøg variablerne tmp_table_size og/eller max_heap_table_size

Disse muligheder vil styre, hvor stor en temp-tabel i hukommelsen kan være, før den anses for at være for stor, og derefter sider til disk som en midlertidig MyISAM-tabel. Jo større disse værdier er, jo mindre sandsynligt vil du få 'kopiering til tmp-tabel på disk'. Sørg for, at din server har nok RAM og max_connections er moderat konfigureret, hvis en enkelt DB-forbindelse skal bruge meget RAM til sine egne midlertidige tabeller.

MULIGHED #2:Brug en RAM-disk til tmp-tabeller

Du bør være i stand til at konfigurere en RAM-disk i Linux og derefter indstille tmpdir i mysql for at være den mappe, der har RAM-disken monteret.

Til at begynde med skal du konfigurere en RAM-disk i OS

Opret en mappe i Linux kaldet /var/tmpfs

mkdir /var/tmpfs

Tilføj derefter denne linje til /etc/fstab (for eksempel, hvis du vil have en 16 GB RAM-disk)

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

og genstart serveren.

Bemærk:Det er muligt at lave en RAM-disk uden at genstarte. Bare husk stadig at tilføje den førnævnte linje til /etc/fstab for at få RAM-disken efter en servergenstart.

Nu til MySQL:

Tilføj denne linje i /etc/my.cnf

[mysqld]
tmpdir=/var/tmpfs

og genstart mysql.

MULIGHED #3:Få tmp-tabellen til RAM-disken ASAP (forudsat at du anvender OPTION #2 først)

Du ønsker måske at tvinge tmp-tabeller ind i RAM-disken så hurtigt som muligt, så MySQL ikke drejer sine hjul og migrerer store tmp-tabeller i hukommelsen til en RAM-disk. Bare tilføj dette til /etc/my.cnf:

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

og genstart mysql. Dette vil få selv den mindste temp-tabel til at blive etableret lige på RAM-disken. Du kan med jævne mellemrum køre ls -l /var/tmpfs at se vikarborde komme og gå.

Prøv det!!!

ADVARSEL

Hvis du ikke ser andet end midlertidige tabeller i /var/tmpfs 24/7, kan dette påvirke OS-funktionalitet/-ydeevne. For at sikre, at /var/tmpfs ikke bliver overbefolket, skal du prøve at justere dine forespørgsler. Når du gør det, skulle du se færre tmp-tabeller, der materialiseres i /var/tmpfs.



  1. Oracle INTERSECT Operator forklaret

  2. SQL Server TRIM-, LTRIM- og RTRIM-funktioner

  3. Hvad er det mindste klientfodaftryk, der kræves for at forbinde C# til en Oracle-database?

  4. DAYOFWEEK() Eksempler – MySQL