我写了一个使用MySQL数据库的程序,并且数据库服务器(非常强大的一个)和客户端之间的事务正在通过ADSL连接(1Mbit/s)发生。MySQL数据包大小是否会导致速度下降?
但我有一个非常非常缓慢的连接每个客户端和服务器之间。通过服务器仅发送大约3-4 KB/s的数据。服务器和客户端都没有将互联网用于其他目的,只是我的程序使用互联网。我想不出为什么? MySQL服务器数据包大小的原因是什么?
有什么建议吗?
我写了一个使用MySQL数据库的程序,并且数据库服务器(非常强大的一个)和客户端之间的事务正在通过ADSL连接(1Mbit/s)发生。MySQL数据包大小是否会导致速度下降?
但我有一个非常非常缓慢的连接每个客户端和服务器之间。通过服务器仅发送大约3-4 KB/s的数据。服务器和客户端都没有将互联网用于其他目的,只是我的程序使用互联网。我想不出为什么? MySQL服务器数据包大小的原因是什么?
有什么建议吗?
尝试使用mytop来识别服务器性能低下的原因。 另一个:您可能正在使用SELECT COUNT(*)FROM ..来导致表扫描的大型InnoDB表。
你能否测试一些其他服务机器之间的交换数据速率是否正常?即使ADSL用户的输出带宽较低,但3-4 kB也可能不是低性能的原因。
有效传输速率常常受到客户端和服务器之间往返数量的严重限制。没有看到你的代码很难说,但你应该检查发生的请求数量。 如果您有一个请求导致返回多条记录,您应该看到更好的带宽使用情况,而不是每个请求只提供几行的更多请求。
在后一种情况下,实际结果传输可能相当快,但“控制通信”(即语句本身,登录请求等)中涉及的延迟会相加,从而有效降低整体吞吐量。
至于数据包大小:当数据包很小时,通信开销较大,增加了上述效果。服务器的默认max_allowed_packet
大小(如果内存为1MB),但在连接时应该没问题。
您是否介意解释您的放缓原因实际上是什么? – 2009-11-05 13:45:37
@Daniel Schneller 恩 - 对不起。我使用“SELECT COUNT(*)FROM”大InnoDB表,它会导致速度放慢。我改变了我的编程思想,现在MySQL比以往任何时候都快。 – rasputin 2009-11-06 11:09:26