Mysql和网络延迟

时间:2013-12-15 16:04:36

标签: mysql performance networking

我们的应用程序通过VPN隧道连接到Web服务器上的MySQL数据库。 问题是,由于网络延迟,应用程序和远程数据库之间的所有交互都非常慢。我使用sysbench测试了网络上的MySQL性能,它显示每个查询花费将近1秒。从应用程序更新DB中的300多行需要20多分钟。

如果不将服务器移近客户端,如何改善网络上的数据库性能?通过慢速网络进行数据库查询的最佳做法是什么?

1 个答案:

答案 0 :(得分:5)

如果问题是网络延迟(而不是网络带宽),那么解决方案是尽可能多地将代码移入数据库。

也就是说,设置存储过程来完成工作而不是逐行编写代码。实质上,存储过程处理多行代码,只需要一次往返数据库的开销。

这需要智能设置,特别是如果您必须将数据传递到存储过程中。考虑以下两种做同样事情的方法:

insert into X(a) values ('a');
insert into X(a) values ('b');
insert into X(a) values ('c');

insert into X(a)
    select 'a' union all select 'b' union all select 'c';

第一次需要三次往返,因为有三个独立的声明,第二次只有一次往返。在延迟主导的环境中,第一个将比第二个环境长三倍。