Postgresql против MySQL: как их размеры данных сравниваются друг с другом? - PullRequest
4 голосов
/ 16 августа 2010

Для того же набора данных, в основном с текстовыми данными, как размер данных (таблица + индекс) Postgresql по сравнению с размером MySQL?

  • Postgresql использует MVCC, что предполагает, что его размер данных будет больше

  • В этой презентации крупнейший блог-сайт в Японии рассказал о своей миграции с Postgresql на MySQL. Одна из причин их отказа от Postgresql заключалась в том, что размер данных в Postgresql был слишком велик (стр. 41): Миграция с PostgreSQL на MySQL в Cocolog, крупнейшем сообществе блогов в Японии

  • Postgresql имеет сжатие данных, поэтому размер данных должен быть меньше. Но MySQL Plugin также имеет сжатие.

Кто-нибудь имеет какой-либо реальный опыт о том, как размеры данных Postgresql и MySQL сравниваются друг с другом?

Ответы [ 4 ]

3 голосов
/ 16 августа 2010
  • MySQL также использует MVCC, просто проверьте InnoDB. Но в PostgreSQL вы можете поменяйте ЗАПОЛНИТЕЛЬ, чтобы освободить место для будущих обновлений. С этим ты может создать базу данных, которая имеет место для текущих данных, но и для некоторых будущие обновления и удаления. когда автовакуум и горячее делают свое дело Да, размер вашей базы данных может быть стабильным.
  • Блог о старых версиях, много вещей изменилось и PostgreSQL делает намного лучше работу в сжатии как это было в старые времена.
  • Сжатие зависит от типа данных, Конфигурация и скорость, а также. Вы нужно проверить, чтобы увидеть, как это работает для вас ситуация.

Я сделал пару преобразований из MySQL в PostgreSQL, и во всех этих случаях PostgreSQL был примерно на 10% меньше (MySQL 5.0 => PostgreSQL 8.3 и 8.4). Эти 10% использовались для изменения коэффициента заполнения в самых обновленных таблицах, для них был установлен коэффициент заполнения от 60 до 70. Скорость была намного лучше (больше не было проблем с более чем 20 одновременными пользователями), а также размер данных был стабильным, MVCC не собирался из-под контроля или вакуум далеко позади.

MySQL и PostgreSQL - два разных зверя, PostgreSQL - это надежность, где MySQL популярен.

3 голосов
/ 16 августа 2010

Оба имеют свои требования к хранилищу в соответствующей документации:

MySQL: http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html
Postgres: http://www.postgresql.org/docs/current/interactive/datatype.html

Быстрое сравнение двух не показывает никакого вопиющегоРазличия типа "zomg PostGres требует 2 мегабайта для хранения битового поля".Я полагаю, что Postgres может иметь более высокие издержки метаданных, чем MySQL, или должен расширять свои файлы данных большими кусками, но я не могу найти ничего очевидного в том, что Postgres «тратит» пространство, для которого миграция на MySQL является лекарством.

2 голосов
/ 18 августа 2010

Я хотел бы добавить, что для больших хранилищ столбцов postgresql также использует их сжатие, используя «довольно простой и очень быстрый член семейства методов сжатия LZ»

Чтобы узнать больше об этом, проверьте http://www.postgresql.org/docs/9.0/static/storage-toast.html

Это довольно низкий уровень и, вероятно, не нужно знать, но так как вы используете блог, вы можете извлечь из этого пользу.

1 голос
/ 16 августа 2010

Об индексах,

MySQL хранит данные в виде индекса, что делает их огромными. Постгрес нет. Это означает, что размер хранилища индекса b-дерева в Postgres не зависит от количества столбцов, которые он охватывает, или от того, какой тип данных у столбца.

Postgres также поддерживает частичные индексы (например, WHERE status = 0), что является очень мощным средством предотвращения создания индексов для миллионов строк, когда требуется всего несколько сотен.

Поскольку вы собираетесь помещать много данных в Postgres, вам, вероятно, будет полезно создавать индексы без блокировки таблицы.

Отправлено с моего iPhone. Извините за плохое написание и отсутствие ссылок

...