Ошибка «Error writing file '/dev/shm/mysql/MAvDMA7v' (Errcode: 28 - No space left on device)»
15 июня 2024
При выполнении запроса на подсчёт количества элементов, найденных в результате фильтрации по гаммам:
возникает ошибка:
Это происходит из-за того, что для выполнения подсчётов, требуемых запросом, нужно больше памяти, чем располагает хранилище /dev/shm (область в оперативной памяти вида Tmpfs, подробнее https://ru.wikipedia.org/wiki/Tmpfs). Таблица filter_data содержит 4 млн записей. Решить проблему можно либо увеличением оперативной памяти и как следствие /dev/shm или облегчить работу запросу.
Выберем второй вариант. Видим, что запрос использует два поля: gamma и iditem, поэтому напрашивается добавление индекса по этим полям.
Создадим индекс, выполнив запрос:
После пробуем снова выполнить проблемный запрос.
Вуаля! Ошибка ушла и теперь всё проходит нормально
SELECT gamma, count(distinct iditem) as counter FROM filter_data GROUP BY gamma
возникает ошибка:
mysqli_sql_exception: Error writing file '/dev/shm/mysql/MAvDMA7v' (Errcode: 28 - No space left on device) in /var/www/spuser/data/www/...
Это происходит из-за того, что для выполнения подсчётов, требуемых запросом, нужно больше памяти, чем располагает хранилище /dev/shm (область в оперативной памяти вида Tmpfs, подробнее https://ru.wikipedia.org/wiki/Tmpfs). Таблица filter_data содержит 4 млн записей. Решить проблему можно либо увеличением оперативной памяти и как следствие /dev/shm или облегчить работу запросу.
Выберем второй вариант. Видим, что запрос использует два поля: gamma и iditem, поэтому напрашивается добавление индекса по этим полям.
Создадим индекс, выполнив запрос:
ALTER TABLE `filter_data` ADD INDEX `gamma_iditem`(`gamma`, `iditem`)
После пробуем снова выполнить проблемный запрос.
Вуаля! Ошибка ушла и теперь всё проходит нормально