Сжатие строк в разных базах данных

Может ли mysql-server-express сжимать строки? Если бы вы могли дать мне ссылку на некоторую документацию, в которой говорится, что это будет очень ценно, так как я не могу найти эту информацию.

Я знаю, что mysql позволяет это с помощью функции compress() в строке. Также интересно, может ли это быть сделано автоматически или вам нужно использовать эту функцию каждый раз?

Также, согласно http://www.postgresql.org/docs/8.0/interactive/datatype-character.html - сжатие выполняется автоматически. Я прав?

1 ответ

PostgreSQL автоматически сжимает все, что хранится в TOAST, и использует его для больших строк. Это сжатие прозрачно, поэтому при вызове кода похоже, что сжатия не было - для чтения и записи используется несжатая форма, но на самом деле это так.

Поскольку он прозрачен, он не влияет на запросы, выполняющие поиск по значениям.

Если вы используете myisampack с MySQL, он сжимает таблицу, но делает ее доступной только для чтения. Я не уверен, позволяет ли экспресс-версия это или нет.

С любой базой данных вы можете сделать свое собственное сжатие и сохранить полученный блоб:

Плюсы: вероятно, лучше, чем сжатие PostgreSQL во многих случаях. Вероятно, лучше, чем любое сжатие, которое происходит в протоколе связи. Если вы используете данные, сжатые, то работа сделана для вас.

Минусы: Требуется работа с вашей стороны. Разрушает возможность поиска в соответствующем поле. Может неоптимально мешать внутреннему сжатию (хотя, вероятно, все же лучше, чем сжатие в тех баллах, где сжатие является победой). Если вы не можете использовать сжатые данные, то у вас есть больше работы, прежде чем получить к ним доступ.

Другие вопросы по тегам