Представьте, что 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 можно оставить низким.