Очистка базы данных от мусора — различия между версиями
Alelekov (обсуждение | вклад) |
Alelekov (обсуждение | вклад) |
||
Строка 21: | Строка 21: | ||
LIMIT <количество записей, удаляемое запросом> | LIMIT <количество записей, удаляемое запросом> | ||
</source> | </source> | ||
− | Количество записей задаётся здесь вручную потому, что | + | Количество записей задаётся здесь вручную потому, что некоторые сайты не справляются с удалением большого количества записей за один раз. Оптимальное значение этого параметра для большинства сайтов - 10000 записей. |
Если есть необходимость просто проверить, есть ли какие-либо “мусорные” записи в базе данных, можно модифицировать запрос, который мы написали выше: | Если есть необходимость просто проверить, есть ли какие-либо “мусорные” записи в базе данных, можно модифицировать запрос, который мы написали выше: |
Текущая версия на 10:22, 26 марта 2019
Актуально для версии 20.
Имеется несколько способов очистки базы данных от различного рода “мусорных” объектов, мы рассмотрим некоторые из них.
1. Очистка с помощью сборщика мусора и файла cron.php
В системе имеется специальный класс-сборщик мусора, который может очищать базу данных - именно он будет удалять все "мусорные" объекты, когда у них истечет время хранения. Для его работы необходимо настроить на хостинге периодическое исполнение файла cron.php, лежащего в корневой директории. Информация по работе Cron содержится в нашей документации.
2. Очистка с помощью запросов к базе данных
Хотя сборщик мусора и очищает таблицы в базе данных, в некоторых случаях может понадобится вручную почистить базу данных от “мусорных” объектов. Например, когда их скопилось довольно много и сборщик мусора не успевает за одну итерацию удалить все. В таком случае удалить “мусорные” объекты можно с помощью запросов вида:
DELETE QUICK FROM `cms3_object_content` WHERE
`int_val` IS NULL
AND`varchar_val` IS NULL
AND `text_val` IS NULL
AND `rel_val` IS NULL
AND `tree_val` IS NULL
AND `float_val` IS NULL
LIMIT <количество записей, удаляемое запросом>
Количество записей задаётся здесь вручную потому, что некоторые сайты не справляются с удалением большого количества записей за один раз. Оптимальное значение этого параметра для большинства сайтов - 10000 записей.
Если есть необходимость просто проверить, есть ли какие-либо “мусорные” записи в базе данных, можно модифицировать запрос, который мы написали выше:
SELECT COUNT(*) FROM `cms3_object_content` WHERE
`int_val` IS NULL
AND`varchar_val` IS NULL
AND `text_val` IS NULL
AND `rel_val` IS NULL
AND `tree_val` IS NULL
AND `float_val` IS NULL
Этот запрос выведет число - количество невалидных записей в таблице. Если вместо “SELECT COUNT(*) ...” в запросе выше использовать “SELECT * ...” - будет выведена полная таблица с невалидными записями.