Помогите MySql и его возможные ограничения

  • Автор темы Автор темы reZero
  • Дата начала Дата начала

reZero

Активный участник
Пользователь
Баллы
76
Всем привет.

Есть плагин, который хранит некоторые данные в таблице, в которой 27 столбцов. Около половины типов BLOB.

Около месяца назад была проблема с плагином - почему-то он не сохранял данные в бд и они попросту терялись. Пришлось переписывать и это помогло.
Но вот сейчас, спустя месяц, проблема вернулась (хотя в коде ничего не менялось). Рандомно пропадают данные когда сервер перезагружается (тобишь вырубается плагин, данные должны отправиться в бд и очиститься из кеша плагина), но некоторые данные попросту не сохраняются.

Возникает вполне логичный вопрос: может все это время дело было не в коде плагина, а в кривой организации хранения данных? (или кривой настройки mysql)

Мое предположение таково: возможно таблица достигла своего предела и более не записывает новые данные... Но отсюда возникает еще больше вопросов: во-первых, таблица весит всего 4 мб. Думаю, это далеко не предел. Ну и во-вторых, я попытался добавить новую запись вручную, вставив значения NULL, запись вполне спокойно добавилась (хотя это возможно из-за того, что все значения были null). Даже сейчас спустя 2 дня от "эксперимента", в бд прибавилось пару записей - тобишь какие-то новые записи добавляются.

Второе предположение: что-то не так с типом BLOB. Ранее я никогда им не пользовался, прочитав документацию увидел, что никаких маленьких ограничений на размер там нет. Но может быть есть какие-то другие подводные камни?

В общем, я в замешательстве. Не знаю на кого или что думать. Не знаю как дальше всё это тестить, выявлять баг
 
Иметь множество столбцов типа blob в принципе сомнительно, но опустим. По-моему, должны хоть какие-то исключения бросаться. Неужели ничего?
 
Всем привет.

Есть плагин, который хранит некоторые данные в таблице, в которой 27 столбцов. Около половины типов BLOB.

Около месяца назад была проблема с плагином - почему-то он не сохранял данные в бд и они попросту терялись. Пришлось переписывать и это помогло.
Но вот сейчас, спустя месяц, проблема вернулась (хотя в коде ничего не менялось). Рандомно пропадают данные когда сервер перезагружается (тобишь вырубается плагин, данные должны отправиться в бд и очиститься из кеша плагина), но некоторые данные попросту не сохраняются.

Возникает вполне логичный вопрос: может все это время дело было не в коде плагина, а в кривой организации хранения данных? (или кривой настройки mysql)

Мое предположение таково: возможно таблица достигла своего предела и более не записывает новые данные... Но отсюда возникает еще больше вопросов: во-первых, таблица весит всего 4 мб. Думаю, это далеко не предел. Ну и во-вторых, я попытался добавить новую запись вручную, вставив значения NULL, запись вполне спокойно добавилась (хотя это возможно из-за того, что все значения были null). Даже сейчас спустя 2 дня от "эксперимента", в бд прибавилось пару записей - тобишь какие-то новые записи добавляются.

Второе предположение: что-то не так с типом BLOB. Ранее я никогда им не пользовался, прочитав документацию увидел, что никаких маленьких ограничений на размер там нет. Но может быть есть какие-то другие подводные камни?

В общем, я в замешательстве. Не знаю на кого или что думать. Не знаю как дальше всё это тестить, выявлять баг
blob не резиновый, если не хватает, смени на mediumblob = 16777215 bytes
 
Проверь, есть ли исключения в логах. Если нет - проверь логи MySQL. Если и там пусто - проверяй логику работы плагина. Возможно придётся какое-то время логировать записываемые в БД данные, чтобы отследить момент, когда запись не будет добавлена.
Также могу предложить, что запись добавляется, однако через какое-то время удаляется по требованию. Казалось бы логично, но и про такое забываешь, когда уставший
 
Иметь множество столбцов типа blob в принципе сомнительно, но опустим. По-моему, должны хоть какие-то исключения бросаться. Неужели ничего?
Никаких исключений не бросается, в этом и все сложности.

Почему иметь много столбцов BLOB это сомнительно?
 
Проверь, есть ли исключения в логах. Если нет - проверь логи MySQL. Если и там пусто - проверяй логику работы плагина. Возможно придётся какое-то время логировать записываемые в БД данные, чтобы отследить момент, когда запись не будет добавлена.
Также могу предложить, что запись добавляется, однако через какое-то время удаляется по требованию. Казалось бы логично, но и про такое забываешь, когда уставший
Посмотрю логи mysql

А что ты имел ввиду под "удаляется по требованию"?
Типа плагин сам, запросом удаляет данные?
 
Данные отправляются исключительно когда плагин/сервер отключается?
Если это так, есть возможность, что данные просто не успевают отправляться в бд.
 
Данные отправляются исключительно когда плагин/сервер отключается?
Если это так, есть возможность, что данные просто не успевают отправляться в бд.
Нет
Каждые 30 минут отправляются в бд и при выключении
 
Наверное лучше всего сделать в плагине логирование каждого действия (какие данные отправились, ответ от БД и т.д.) и потом смотреть какие данные куда делись. Тут наверное опытным путем получится понять в чем проблема.
 
Назад
Верх