Перейти к содержимому


Фотография

Как удалить старые записи БД?

база данных MySQL

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 VELVET

VELVET

    Участник

  • Пользователь
  • PipPip
  • 76 сообщений

Отправлено 27 Январь 2016 - 21:18

Всем привет!
Помогите разобраться, как правильно следить за используемым местом базами данных?

У меня есть тариф веб-хостинга, например, "Стандарт" с 3 Гб места.
На этом хостинге - сайт и форум для сервера (это всё места почти не занимает и можно было использовать бесплатный тариф в придачу к серверу).

 

Но я ещё для экономии места на самом сервере скинул на веб-хостинг БД плагина-логгера (Minecraft) с записями действий игроков, чтобы можно было откатывать действия грифферов. Под это дело взял побольше тариф, чтобы места было не 1 Гб, а хотя бы 3 Гб.

Ещё 2 года назад столкнулся с проблемой отслеживания занимаемого места БД, т.к., похоже, на хостинге никаких ограничений и автоуведомлений нет. А в ТП мне сказали, что это специально, чтобы не создавать клиентам проблем и мы сами должны следить за используемым местом (например, удаляя старые записи).

PjnNG.png

 

В тот момент проблема решилась просто - мне надо было заменить один плагин на другой и поэтому я просто удалил через ISP Manager БД, которая занимала 7 Гб.

(кстати, вопрос - она действительно удалилась и перестала занимать место на хостинге?)

 

 

Собственно, вопрос - как это делать правильно (не удаляя полностью БД)?

 

У меня сейчас БД уже занимает 6.5 Гб и 42 млн записей в самой крупной таблице (это примерно за год существования сервера с низким онлайном), а всякие попытки почистить её, не удаляя, я предпринимаю уже несколько недель.

 

  • Через сам плагин-логгер (CoreProtect) не получилось почистить старые записи БД. Как минимум, размер БД не уменьшился, хотя плагин отчитывался, что что-то там поудалял (возможно, когда-нибудь получится, но пока не вышло).

 

  • через запросы к БД в phpMyAdmin тоже не всё гладко - этот запрос выдаёт ошибку:
     DELETE FROM `co_block` WHERE `time` < 1443661261

    #1317 - Query execution was interrupted

 

 

  • запрос такого вида, вроде бы, удаляет записи (потом начинается гемор, что надо учитывать порядковые номера уже удалённых записей), но при этом выяснилось, что вроде бы место, занимаемое БД не меняется (по крайней мере, в ISP Manager, как было 6.5 Гб, так и осталось и даже увеличилось, т.к. игроки продолжают играть, но при этом в phpMyAdmin написано, что размер конкретной таблицы уменьшился)

     

    DELETE FROM `co_block` WHERE `rowid` < 400000

     

  • и есть предположение, что тип таблиц "innodb" и при их удалении (и чистке записей?) кэш остаётся на диске и занимаемое место не уменьшается. Но это только предположение, т.к. место пока не уменьшилось. Однако, ведь, в ТП посоветовали именно удалять старые записи...

 

В общем, как-то странно всё это и не очень понятно, как соответствовать ограничениям хостинга и при этом остаться при своих интересах (не удалять целиком БД, а только старые записи до определённых дат)?

Заранее спасибо, если как-то сможете помочь :)


Сообщение отредактировал VELVET: 27 Январь 2016 - 21:25

  • YouAreNext это нравится

#2 Santiago

Santiago

    Постоянный пользователь

  • Модератор
  • 5 051 сообщений

Отправлено 28 Январь 2016 - 12:00

Если так много записей, удаляйте их частями. Сначала за последний месяц, потом за 2 месяца и т.д



#3 VELVET

VELVET

    Участник

  • Пользователь
  • PipPip
  • 76 сообщений

Отправлено 03 Февраль 2016 - 19:49

Если так много записей, удаляйте их частями. Сначала за последний месяц, потом за 2 месяца и т.д

Спасибо, вроде, разобрался: основная проблема была в том, что долго (час и более) не обновляется информация в ISP Manager о занимаемом БД месте и это сбивало с толку.

 

В итоге сработал только один метод - удаление записей порциями по 500 тыс. (с отслеживание "rowid"), т.к. даже при попытке удалять по 1 млн. записей выдаётся ошибка...

DELETE FROM `co_block` WHERE `rowid` < 400000

Вот, за сутки кое-как почистил 4 Гб - буду продолжать в том же духе )))


Сообщение отредактировал VELVET: 03 Февраль 2016 - 19:50

  • YouAreNext это нравится



Темы с аналогичным тегами база данных, MySQL

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных