Как разместить временные таблицы MySQL в оперативной памяти

Временные таблицы в MySQL – очень важная и незаменимая вещь, особенно если правильно это использовать. В этой статье Sovetbati покажет как разместить временные таблицы MySQL в оперативной памяти на примере Unix систем. Перенос временных таблиц в оперативную память в разы ускорит создание сложных выборок.
Решение
Для этого посмотрите сколько у вас есть свободной оперативной памяти, допустим 4 ГБ. Открываем bash или попросту консоль через ssh.
- Вводим команду «
mkdir /var/lib/mysql/tmp_table
»- создаст директорию для хранения временных файлов
Устанавливаем владельцем директории mysql - «chown mysql:mysql /var/lib/mysql/tempsql»
- Теперь надо узнать gid группы и uid пользователя mysql командой — «id mysql». У нас это id 27.
- Открываем файл /etc/fstab и добавляем строку «tmpfs /var/lib/mysql/
tempsql
tmpfs rw,gid=27,uid=27,size=4G,mode=0700 0 0» Монтируем новый раздел - «mount /var/lib/mysql/tmp_table»
Отрываем /etc/my.cnf и прописываем вместо строки tmpdir=... свою «tmpdir=/var/lib/mysql/tempsql»
Временные таблицы не заберут все 4 гигабайта памяти сразу, они будут брать по необходимости. Далее перезапускаем mysql или же лучше всего перезагрузить сервер чтобы все изменения были приняты.
Кто-то скажет, а почему бы просто не поставить SSD накопители или SSD с поддержкой NVME? Оперативная память в любом случае намного быстрее SSD и кстати, она в разы дороже топовых SSD в пересчёте на гигабайт.