Главная страница » Блог » Почему MySQL создаёт временные таблицы на диске?

Почему MySQL создаёт временные таблицы на диске?

Почему MySQL создаёт временные таблицы на диске? Потому что промежуточный результат запроса не помещается в отведённую память: MySQL сначала пытается держать внутреннюю временную таблицу в RAM, а при превышении лимитов tmp_table_size и max_heap_table_size, в MySQL 8.0 также temptable_max_ram, сбрасывает её на диск, чтобы запрос не завершился ошибкой из-за нехватки памяти. Это не сбой, а штатный механизм выполнения сортировок, группировок, DISTINCT, UNION, подзапросов и оконных функций при больших промежуточных наборах данных. Практически стоит проверить Created_tmp_disk_tables и Created_tmp_tables, сравнить объём промежуточных результатов с лимитами памяти, убедиться, что каталог tmpdir размещён на быстром диске и имеет запас места, а также оптимизировать GROUP BY, ORDER BY, DISTINCT и индексы, чтобы уменьшить объём данных, уходящих во временные таблицы.

Внимание:
Условия: Продвижение сайта ежедневными статьями — от 15 000 ₽/мес (1-й месяц — 25 000 ₽, настройка). Если бюджет подходит — посмотреть тарифы →
Прокрутить вверх