То, когда я должен использовать MySQL, сжало протокол?

Я узнал, что MySQL может сжать коммуникацию между серверами и клиентами.

Сжатие используется, если и клиент и сервер поддерживает zlib сжатие, и клиент запрашивает сжатие.

(от MySQL Forge Wiki)

Самые очевидные за и против

  • профессионалы: Уменьшенный размер полезной нагрузки
  • недостатки: Увеличенное время вычисления

Так, сжат, протоколируют что-то, что я должен включить каждый раз, когда я могу позволить себе серверы с соответствующими спецификациями? Есть ли другие факторы, которые я должен рассмотреть?

21
задан ento 24 March 2010 в 09:21
поделиться

3 ответа

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

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

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

Самый оптимизированный сервер базы данных использует 100% своего ЦП 100% времени, иначе вы тратите вычислительные ресурсы впустую, имея процессор, который сидит там и ничего не делает. Конечно, вам не нужен 101%, поэтому ваш целевой диапазон намного ниже 100%. Тем не менее, я хочу сказать, что если у вас есть большой запас, прежде чем вы достигнете узкого места в ЦП, и наборы результатов имеют значительный размер, а сеть является фактором, тогда включите сжатие. Циклы ЦП дешевы, особенно неиспользуемые (вы платите за электричество и охлаждение).

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

Не забывайте, что клиент также должен расходовать циклы ЦП для распаковки данных. Не серьезная проблема, но все же фактор. В целом современные процессоры быстрее, чем современные сети.

19
ответ дан 29 November 2019 в 20:55
поделиться

По моему опыту, это особенно полезно, если вы подключаетесь к внешнему серверу MySQL, который находится в совершенно другой сети (или даже стране). Преимущество, которое вы получаете от включения сжатия в таких случаях, зависит от размера передаваемых данных и расстояния между клиентом и сервером. Как всегда, вы должны протестировать свое приложение со сжатием и без него, а затем принять решение, которое наиболее выгодно для вашей ситуации. На этот вопрос нет однозначного ответа.

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

1
ответ дан 29 November 2019 в 20:55
поделиться

По моему опыту, большинство серверов mysql расположены на том же сервере, что и веб-сервер, поэтому пропускная способность сети не является проблемой.

Я бы сказал, что если ваши db и app/web серверы географически разделены (т.е. не находятся на одном сервере или в одной сети), то пользы от включения сжатия будет очень мало.

4
ответ дан 29 November 2019 в 20:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: