Если в процессе диагностики (show processlist) стало возникать множество "Copying to tmp table" запросов, то для дополнительной оптимизации в MySQL можно использовать tmpfs для хранения временных таблиц.
Подключением tmpfs
Создадим директорию и зададим права:
1 2 | mkdir /tmp/mysqltmp chown mysql:mysql /tmp/mysqltmp |
Далее опредилм uid и gid mysql через /etc/passwd и /etc/group.
Пусть это будут uid=25(mysql) gid=26(mysql) groups=25(mysql) для примера.
В /etc/fstab
1 | nano /etc/fstab |
пропишем строчку
1 | tmpfs /tmp/mysqltmp tmpfs rw,gid=26,uid=25,size=2G,mode=0700 0 0 |
Если прописать не достаточный размер раздела, то большие временные таблицы туда не поместятся, соответственно, запросы не будут выполняться.
Далее монтируем раздел tmpsf командой:
1 | mount /tmp/mysqltmp |
Если в /etc/fstab вы ничего не вписывали, то монтирование tmpfs можно сделать и командой:
1 | mount -o size=2g,gid=26,uid=25,mode=0700 -t tmpfs tmpfs /tmp/mysqltmp |
Но после перезагрузки раздел не подмонтируется.
Настройка tmpfs в MySQL
Изменяем настройки в my.cnf
1 | tmpdir=/tmp/mysqltmp/ |
И перезапускаем mysql.