sql >> Databasteknik >  >> RDS >> Mysql

hoppa över kopiering till tmp-tabell på disk mysql

Det finns två saker du kan göra för att minska effekten av detta

ALTERNATIV #1 :Öka variablerna tmp_table_size och/eller max_heap_table_size

Dessa alternativ kommer att styra hur stor en temporär tabell i minnet kan vara innan den anses vara för stor och sedan sidor till disk som en tillfällig MyISAM-tabell. Ju större dessa värden är, desto mindre sannolikt kommer du att få "kopiering till tmp-tabell på disk". Se till att din server har tillräckligt med RAM och max_anslutningar är måttligt konfigurerad om en enda DB-anslutning skulle behöva mycket RAM-minne för sina egna temporära tabeller.

ALTERNATIV #2:Använd en RAM-disk för tmp-tabeller

Du bör kunna konfigurera en RAM-disk i Linux och sedan ställa in tmpdir i mysql för att vara mappen som har RAM-skivan monterad.

Till att börja med, konfigurera en RAM-disk i OS

Skapa en mapp i Linux som heter /var/tmpfs

mkdir /var/tmpfs

Lägg sedan till den här raden i /etc/fstab (till exempel om du vill ha en 16 GB RAM-disk)

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

och starta om servern.

Obs:Det är möjligt att skapa en RAM-disk utan att starta om. Kom bara ihåg att fortfarande lägga till den tidigare nämnda raden i /etc/fstab för att få RAM-disken efter en omstart av servern.

Nu för MySQL:

Lägg till den här raden i /etc/my.cnf

[mysqld]
tmpdir=/var/tmpfs

och starta om mysql.

ALTERNATIV #3:Hämta tmp-tabellen till RAM-disken ASAP (förutsatt att du använder ALTERNATIV #2 först)

Du kanske vill tvinga in tmp-tabeller i RAM-disken så snabbt som möjligt så att MySQL inte snurrar på hjulen och migrerar stora tmp-tabeller i minnet till en RAM-disk. Lägg bara till detta i /etc/my.cnf:

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

och starta om mysql. Detta kommer att göra att även den minsta temptabellen skapas direkt i RAM-disken. Du kan med jämna mellanrum köra ls -l /var/tmpfs att se vikariebord komma och gå.

Ge det ett försök !!!

VARNING

Om du inte ser något annat än temporära tabeller i /var/tmpfs 24/7, kan detta påverka operativsystemets funktionalitet/prestanda. För att vara säker på att /var/tmpfs inte blir överbefolkad, titta på att ställa in dina frågor. När du väl gör det bör du se färre tmp-tabeller materialiseras i /var/tmpfs.



  1. Bör korsningstabeller ha mer än en primärnycklar från en annan identifieringstabell?

  2. PostgreSQL-privilegier och säkerhet - Låsa det offentliga schemat

  3. Döljer sant databasobjekt-ID i webbadresser

  4. Distribuera Cloudera CDP Data Center på Oracle Cloud Infrastructure (OCI)