Использование tmpfs в MySQL

Если вы стали замечать, что show processlist в Mysql стал показывать много Copying to tmp table запросов, а все необходимые оптимизации запросов уже сделаны, то можно подумать о использовании tmpfs для хранения временных таблиц.

Подключить tmpfs к mysql достаточно просто. Для начала создадим директорию и задаим на нее правильные права:

mkdir /tmp/mysqltmp
chown mysql:mysql /tmp/mysqltmp

Далее опредилм uid и gid mysql через /etc/passwd и /etc/group. Этот шаг пропускать нельзя, без него не работает.
Пусть это будут uid=502(mysql) gid=503(mysql) groups=503(mysql) для примера.

В /etc/fstab пропишем строчку:

tmpfs /tmp/mysqltmp tmpfs rw,gid=503,uid=502,size=2G,mode=0700 0 0

Если прописать очень маленьки размер раздела, то большие временные таблицы туда не будут влезать, соответсвенно, запросы не будут выполняться. Определите нужны размер опытным путем.

Далее монтируем раздел tmpsf командой:

mount /tmp/mysqltmp

Если в /etc/fstab вы ничего не вписывали, то монтирование tmpfs можно сделать и командой:

mount -o size=2g,gid=503,uid=502,mode=0700 -t tmpfs tmpfs /tmp/mysqltmp

Но после перезагрузки раздел не подмонтируется.
Вносим изменения в my.cnf

tmpdir=/tmp/mysqltmp/

И перезапускаем mysql.


Понравилась статья? Поделись с остальными.

Комментарии закрыты.