Сжатие строк в разных базах данных
Может ли mysql-server-express сжимать строки? Если бы вы могли дать мне ссылку на некоторую документацию, в которой говорится, что это будет очень ценно, так как я не могу найти эту информацию.
Я знаю, что mysql позволяет это с помощью функции compress() в строке. Также интересно, может ли это быть сделано автоматически или вам нужно использовать эту функцию каждый раз?
Также, согласно http://www.postgresql.org/docs/8.0/interactive/datatype-character.html - сжатие выполняется автоматически. Я прав?
1 ответ
PostgreSQL автоматически сжимает все, что хранится в TOAST, и использует его для больших строк. Это сжатие прозрачно, поэтому при вызове кода похоже, что сжатия не было - для чтения и записи используется несжатая форма, но на самом деле это так.
Поскольку он прозрачен, он не влияет на запросы, выполняющие поиск по значениям.
Если вы используете myisampack с MySQL, он сжимает таблицу, но делает ее доступной только для чтения. Я не уверен, позволяет ли экспресс-версия это или нет.
С любой базой данных вы можете сделать свое собственное сжатие и сохранить полученный блоб:
Плюсы: вероятно, лучше, чем сжатие PostgreSQL во многих случаях. Вероятно, лучше, чем любое сжатие, которое происходит в протоколе связи. Если вы используете данные, сжатые, то работа сделана для вас.
Минусы: Требуется работа с вашей стороны. Разрушает возможность поиска в соответствующем поле. Может неоптимально мешать внутреннему сжатию (хотя, вероятно, все же лучше, чем сжатие в тех баллах, где сжатие является победой). Если вы не можете использовать сжатые данные, то у вас есть больше работы, прежде чем получить к ним доступ.