我了解到MySQL可以压缩服务器和客户端之间的通信。
如果客户端和客户端都使用压缩 服务器支持zlib压缩,和 客户端请求压缩。
(来自MySQL Forge Wiki)
最明显的利弊是
那么,只要我能负担得起具有足够规格的服务器,我应该启用压缩协议吗?我还应该考虑其他因素吗?
答案 0 :(得分:18)
除了数据库服务器与其客户端之间的网络带宽和延迟之外,性能优势在很大程度上取决于您发送的结果集的大小。
结果集越大,延迟越大或带宽越小,您就越有可能看到压缩的好处。
您的最高服务水平仅限于最小的瓶颈。因此,您需要分析您目前在网络和CPU资源方面的位置。
最优化的数据库服务器在100%的时间内使用100%的CPU,否则你会因为处理器没有做任何事情而浪费计算资源。当然,您不希望它达到101%,因此您的目标范围远低于100%。然而,我的观点是,如果在达到CPU瓶颈之前有很大的空间,并且结果集的大小很大,而网络是一个因素,那么就打开压缩。 CPU周期很便宜,尤其是未使用的CPU周期(你需要支付电费和制冷费)。
如果您为带宽付费,交换带宽的CPU使用率很容易合理,即使您没有达到带宽瓶颈,更快的速度和更高的服务水平也是值得的。
不要忘记客户端还必须花费CPU周期来解压缩数据。不是一个主要问题,但仍然是一个因素。一般来说,今天的CPU比现在的网络更快。
答案 1 :(得分:12)
我知道现在已经很晚了,但我可能会分享这个:
事实证明,100 Mbit链路(往返时间为1.4 ms)不 足够快......通过压缩,总索引时间减少到87秒 从127秒总运行时间几乎提高了1.5倍。 MySQL的 查询时间的改善甚至更大。另一方面是1 Gbit链路 很快;总运行时间是1.2倍 压缩。
除非您的数据库和客户端位于同一台计算机上,否则在100 Mbits网络上运行速度较慢,请启用压缩功能!
但是,您的最终决定还可能取决于CPU周期成本(压缩/解压缩)和Bandwith使用之间的平衡(线路上的更多数据)。
答案 2 :(得分:4)
根据我的经验,大多数mysql服务器与网络服务器位于同一台服务器上,因此网络带宽不是问题。
我会说,除非您的数据库和应用/网络服务器在地理位置上分开(即不在同一服务器或网络上),否则启用压缩的好处将非常小。
答案 3 :(得分:1)
根据我的经验,如果您连接到完全位于另一个网络(甚至国家/地区)的外部MySQL服务器,它将特别有用。在这种情况下,从启用压缩获得的好处取决于您要传输的数据的大小,以及客户端和服务器之间的距离。与往常一样,您应该使用和不使用压缩来测试您的应用程序,然后做出最有利于您的情况的决定。这个问题没有绝对的答案。
如果您在同一台计算机上或甚至在同一网络上查询MySQL服务器,我认为没有多少启用压缩的功能。