Хранить GZIP: редактировать текст в MySQL? - PullRequest
4 голосов
/ 30 апреля 2010

Является ли обычным делом для больших приложений и баз данных GZIP-текстовые данные перед их вставкой в ​​базу данных?

Я предполагаю, что любой полнотекстовый поиск по фактическому текстовому полю не будет работать, прежде чем снова разархивировать его?

Ответы [ 3 ]

5 голосов
/ 30 апреля 2010

Если вы используете тип таблицы InnoDB в MySQL с одной из более поздних версий, тогда можно включить сжатие для самой таблицы InnoDB .

Он управляется на низком уровне, поэтому не меняет ваши запросы или что-либо еще. Из того, что я прочитал, небольшая нагрузка на сжатие компенсируется за счет уменьшения дискового ввода-вывода и предоставления возможности хранения большего количества данных в пуле буферов в памяти. Однако вы упомянули полнотекстовый поиск, который InnoDB не поддерживает, так что это может быть невозможно.

Существует также тип таблицы Archive в MySQL, но вы теряете функциональность индексации помимо первичного ключа, который я считаю.

Еще одна альтернатива - «упаковать» таблицу MyISAM, но я считаю, что она делает таблицу доступной только для чтения и не сжимает так же хорошо, как другие опции.

2 голосов
/ 30 апреля 2010

Я не видел, чтобы это делалось много, так как это, по сути, мешает кому-либо манипулировать данными на стороне MySQL:

  • нет полного текста, да
  • но также нет like, нет =, никаких других манипуляций ...

Тем не менее, если вы используете свою базу данных только для хранения этих данных, а не для манипулирования ими, это может быть интересно.

Примечание. Возможно, вы захотите сделать несколько тестов, чтобы измерить влияние на производительность, которое это может оказать, поскольку сжатие / распаковка требует ЦП!


После этого возникает вопрос: будете ли вы заниматься сжатием на стороне клиента (PHP) или на стороне сервера (MySQL)?

Во втором случае существует функция COMPRESS(), предоставляемая MySQL, которая может вас заинтересовать.

0 голосов
/ 30 апреля 2010

Плохая идея. Дополнительная обработка для экономии места, когда дисковое пространство составляет менее 1 ГБ, не компенсирует дополнительное время программирования для этого (не только на начальном этапе, помните о техническом обслуживании).

Это, вероятно, замедлит доступ к базе данных, поскольку данные должны быть распакованы / сжаты. Индексы не будут правильно работать со сжатыми данными, так как вам нужно будет выполнить сканирование таблицы, распаковать данные, а затем сравнить. И полнотекстовый поиск также отсутствует.

Если вы должны сделать это, пожалуйста, не используйте gzip. используйте встроенную функцию COMPRESS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...