Управление BLOB-данными в MySQL при обновлении до нуля? - PullRequest
0 голосов
/ 06 марта 2012

У меня есть несколько транзакционных таблиц, в которых логически размещены text и столбец blob в MySQL.После определенного периода времени эти столбцы данных не нужны в строках старше X дней.Мне нужно быть максимально осведомленным о хранении.Это происходит на нескольких узлах в кластере, которые имеют ограниченное локальное хранилище и хранилище NFS, поэтому сохранение их в виде файлов нежизнеспособно.

Два очевидных решения, которое является лучшим (если таковой имеется) способом обеспечения свободного хранения таблиц больших двоичных объектов:

  1. В некоторых расписаниях обновите все строки, в которых дата
  2. Храните эти BLOB-объекты в отдельной таблице и затем удаляйте из таблицы, где дата

Поддерживая в хорошей форме схему, я не хочу иметь таблицу блобов для каждой таблицы транзакций, чтобы сохранить ключи транзакций независимыми, и я не хочу иметь ассоциативные / умные / составные ключи в одной таблице BLOB-объектов.

Какой механизм лучше всего подходит для временного хранения больших двоичных объектов в MySQL?

1 Ответ

1 голос
/ 06 марта 2012

Я предполагаю, что в вашей базе данных есть хранилище InnoDB или NDB. В этом случае по умолчанию вы никогда не вернете место на диске после обновления / удаления строк или таблиц (включая столбцы BLOB).

Есть только один способ решить проблему. Комплект

innodb_file_per_table=1

в my.cnf, и у вас будут отдельные файлы для каждой таблицы. Затем второй способ (удаление таблицы, когда она не нужна) восстановит пространство для хранения.

...