Има две неща, които можете да направите, за да намалите въздействието от това
ОПЦИЯ №1:Увеличете променливите tmp_table_size и/или max_heap_table_size
Тези опции ще управляват колко голяма може да бъде дадена временна таблица в паметта, преди да бъде счетена за твърде голяма и след това страници на диск като временна таблица MyISAM. Колкото по-големи са тези стойности, толкова по-малка е вероятността да получите „копиране в tmp таблица на диска“. Моля, уверете се, че вашият сървър има достатъчно RAM и max_connections е умерено конфигуриран, ако една връзка с DB се нуждае от много RAM за собствените си временни таблици.
ОПЦИЯ №2:Използвайте RAM диск за tmp таблици
Трябва да можете да конфигурирате RAM диск в Linux и след това да зададете tmpdir в mysql да бъде папката, в която е монтиран RAM дискът.
За начало конфигурирайте RAM диск в операционната система
Създайте папка в Linux, наречена /var/tmpfs
mkdir /var/tmpfs
След това добавете този ред към /etc/fstab (например, ако искате 16GB RAM диск)
none /var/tmpfs tmpfs defaults,size=16g 1 2
и рестартирайте сървъра.
Забележка:Възможно е да се направи RAM диск без рестартиране. Само не забравяйте да добавите гореспоменатия ред към /etc/fstab, за да имате RAM диска след рестартиране на сървъра.
Сега за MySQL:
Добавете този ред в /etc/my.cnf
[mysqld]
tmpdir=/var/tmpfs
и рестартирайте mysql.
ОПЦИЯ №3:Вземете tmp таблица в RAM диска възможно най-скоро (ако приемем, че първо приложите ОПЦИЯ №2)
Може да искате да принудите tmp таблици в RAM диска възможно най-бързо, така че MySQL да не върти колелата си, мигрирайки големи tmp таблици в паметта в RAM диск. Просто добавете това към /etc/my.cnf:
[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K
и рестартирайте mysql. Това ще доведе до появата на дори най-малката временна таблица точно в RAM диска. Можете периодично да изпълнявате ls -l /var/tmpfs
за да гледате как временните маси идват и си отиват.
Опитайте !!!
ПРЕДУПРЕЖДЕНИЕ
Ако не виждате нищо освен временни таблици в /var/tmpfs 24/7, това може да повлияе на функционалността/производителността на ОС. За да се уверите, че /var/tmpfs не се пренаселява, разгледайте настройките на вашите заявки. След като го направите, трябва да видите по-малко tmp таблици, които се материализират в /var/tmpfs.