@koliane

Размер таблицы в MySql не уменьшается при очистке значений. Как быть?

Есть таблица, в которой хранится информация по email рассылке для каждого пользователя (тема письма, текст письма, статус отправки и т.д.). В таблицу добавляется около 30 000 записей в день. Это увеличивает таблицу на 300 Мб в день
Для того чтобы уменьшить размер таблицы, я очищаю поле "текст письма" для всех записей со статусом "отправлено". Размер в этом случае должен уменьшиться в разы. Но этого не происходит. Размер таблицы остался прежним.
Почему так происходит? Как уменьшить размер таблицы при очистке полей?
Тип таблицы — Innodb.

PS. Просьба не писать сообщения, наподобие "таблицу организовать лучше по другому" и тому подобные сообщения. Вопрос состоит в другом, а именно — как уменьшить размер таблицы, очищая поля записей?
  • Вопрос задан
  • 2777 просмотров
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 3
@Kirill-Gorelov
С ума с IT
Вопрос состоит в другом, а именно — как уменьшить размер таблицы, очищая поля записей?
Удалить либо все, либо половину таблицы.
ЧТо бы этого не было, нужно действительно немного переделать таблицу.
PS. Просьба не писать сообщения, наподобие "таблицу организовать лучше по другому" и тому подобные сообщения.
Либо вы просто не знаете как это сделать, либо лень.
Поэтому вам нужно выбрать что-то одно, оставить как есть, либо добавить еще одну таблицу с текстом письма.
Ответ написан
Комментировать
AlexXYZ
@AlexXYZ
O Keep Clear O
Немного полистал инфу, там написано
1. "That ibdata1 isn't shrinking is a particularly ann..."
2. Движок InnoDB не поддерживает уменьшение размеров ...
3. Есть ещё бинарные логи (забиваются очень сильно), они чистятся командой "RESET MASTER" (только осторожно - они используются для репликации, если серверов несколько).

Т.е. фактически у вас сейчас ситуация к которой надо было готовиться заранее. К сожалению. Я вас не упрекаю, сам был не в курсе про этот фокус MySQL.
Ответ написан
Комментировать
@tvoyadres
Вообще то есть, решение нужно просто скопировать таблицу старую на новую, затем обратно новую переименовать.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы