Są dwie rzeczy, które możesz zrobić, aby zmniejszyć ten wpływ
OPCJA #1 :Zwiększ zmienne tmp_table_size i/lub max_heap_table_size
Te opcje określają, jak duża może być tabela tymczasowa w pamięci, zanim zostanie uznana za zbyt dużą, a następnie strony na dysk jako tymczasowa tabela MyISAM. Im większe są te wartości, tym mniejsze prawdopodobieństwo 'kopiowania do tablicy tmp na dysku'. Upewnij się, że Twój serwer ma wystarczającą ilość pamięci RAM i max_connections jest umiarkowanie skonfigurowany, jeśli pojedyncze połączenie DB wymaga dużej ilości pamięci RAM dla własnych tabel tymczasowych.
OPCJA 2:Użyj dysku RAM dla tabel tmp
Powinieneś być w stanie skonfigurować dysk RAM w systemie Linux, a następnie ustawić tmpdir w mysql jako folder, w którym zamontowany jest dysk RAM.
Na początek skonfiguruj dysk RAM w systemie operacyjnym
Utwórz folder w systemie Linux o nazwie /var/tmpfs
mkdir /var/tmpfs
Następnie dodaj tę linię do /etc/fstab (na przykład, jeśli chcesz mieć dysk RAM o pojemności 16 GB)
none /var/tmpfs tmpfs defaults,size=16g 1 2
i zrestartuj serwer.
Uwaga:Możliwe jest utworzenie dysku RAM bez ponownego uruchamiania. Pamiętaj tylko, aby dodać wspomnianą linię do /etc/fstab, aby mieć dysk RAM po restarcie serwera.
Teraz dla MySQL:
Dodaj tę linię w /etc/my.cnf
[mysqld]
tmpdir=/var/tmpfs
i uruchom ponownie mysql.
OPCJA #3:Pobierz tabelę tmp do dysku RAM JAK NAJSZYBCIEJ (zakładając, że najpierw zastosujesz OPCJA #2)
Możesz chcieć zmusić tabele tmp do pamięci RAM-dysku tak szybko, jak to możliwe, aby MySQL nie kręcił się, migrując duże tabele tmp w pamięci do RAM-dysku. Po prostu dodaj to do /etc/my.cnf:
[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K
i uruchom ponownie mysql. Spowoduje to, że nawet najmniejsza tabela temp zostanie utworzona bezpośrednio na dysku RAM. Możesz okresowo uruchamiać ls -l /var/tmpfs
aby oglądać tymczasowe tabele przychodzące i odchodzące.
Wypróbuj !!!
OSTRZEŻENIE
Jeśli nie widzisz nic poza tabelami tymczasowymi w /var/tmpfs 24/7, może to wpłynąć na funkcjonalność/wydajność systemu operacyjnego. Aby upewnić się, że /var/tmpfs nie zostanie przepełniony, przyjrzyj się dostrojeniu zapytań. Gdy to zrobisz, powinieneś zobaczyć mniej tabel tmp materializujących się w /var/tmpfs.