PostgreSQL против MySQL для обработки вставки / удаления больших количеств больших двоичных объектов - PullRequest
1 голос
/ 07 марта 2011

У меня есть приложение, которое я скоро буду переписывать, в котором в базе данных хранится большое количество временных блобов.Приложение будет вставлять и удалять большое количество BLOB-объектов (размером до 5 МБ каждый) в течение каждого дня.В настоящее время приложение использует версию PostgreSQL, которая очень старая (7.3.x).В этой версии PostgreSQL нам приходилось регулярно запускать процесс внешнего вакуума, чтобы контролировать размер базы данных, кроме того, этот процесс требовал завершения работы приложения для правильной работы.

Мы рассматривали возможность обновления до новейшей версии PostgreSQL или перехода на другую базу данных.В частности, мы были заинтересованы в переходе на MySQL.Мне было интересно, если бы кто-нибудь здесь был знаком с поддержкой обработки BLOB-объектов в последних версиях этих серверов и предлагал какие-либо предложения, какие из них могли бы работать лучше для приложения, которое будет постоянно вставлять и удалять BLOB-объекты.Другие различия в возможностях между двумя серверами для нас не проблема.

Я провел некоторое исследование и обнаружил множество сравнений функций между MySQL и PostgreSQL, но ничего, что действительно решало эту проблему.Я надеюсь, что кто-то здесь может иметь некоторый опыт работы с этим аспектом одной или обеих систем баз данных.

Спасибо

1 Ответ

1 голос
/ 07 марта 2011

Postgres 7.x действительно был главной PITA, когда речь шла о уборке. 9.0 - лот лучше в этой области. Демон autovacuum может быть настроен на уровне отдельных таблиц, так как я думаю 8.3, и для описанного сценария вы, вероятно, сделаете его очень агрессивным для этой таблицы (или таблиц, если задействовано более одной таблицы).

Не думаю, что имеет значение, удаляете ли вы строки со столбцом BLOB (т.е. bytea) или нет. Тем более, что большие двоичные объекты хранятся вне очереди (вам может понадобиться настроить демон auto-vaccuum для так называемой таблицы TOAST, но я не уверен)

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

Как бы мне ни нравился PostgreSQL, я вынужден признать, что вся тема вакуума (несмотря на то, что с каждым выпуском все легче и легче становиться) по-прежнему остается одним из его слабых мест (и источником многих проблем). *

Я ничего не могу сказать о MySQL, так как никогда не использовал в производственной среде. В отличие от вас, другие функции (кроме BLOB-объектов) достаточно важны для меня, чтобы держаться подальше от MySQL - и если это только для лицензии.

...