@kkoshakk

Tmp_table_size и tmpdir = /dev/shm?

Помогите разобраться, если я буду использовать tmpdir = /dev/shm для временных таблиц базы, то зачем указывать tmp_table_size (этот параметр же указывает сколько места выделить в оперативки под временные таблицы)
  • Вопрос задан
  • 1991 просмотр
Решения вопроса 1
landergate
@landergate
IT-шный jack-of-all-trades
Представьте, что tmp_table_size - это ваш RAM, а tmpdir - это ваш swap.
Если в вашей операции участвует tmp-таблица, и её размер начинает выходить за пределы tmp_table_size, она переносится на диск, чтобы продолжать работать.

Если у вас много неиспользуемой RAM, вы можете значительно увеличить tmp_table_size, причём не прибегая к /dev/shm, поскольку в нём не окажется никакого смысла.
Только не забудьте пропорционально увеличить и max_heap_table_size, поскольку он распространяется и на tmp-таблицы, ведь до перехода на диск они работают на движке MEMORY.

Если у вас в таблицах используются поля TEXT/BLOB, то tmp-таблицы, связанные с ними, всегда будут размещаться на диске. Если ваше приложение зависит от полей TEXT/BLOB и вам очень часто приходится сталкиваться с tmp-таблицами, то размещение на /dev/shm оправдано. В этом случае tmp_table_size можно оставить низким.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@kkoshakk Автор вопроса
Временные таблицы же не могут быть созданы в памяти когда в запросе есть TEXT или BLOB, поэтому лучше использовать tmpdir = /dev/shm? Или я не прав?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы