Mysql和网络延迟

Axo*_*xon 2 mysql performance networking

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

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

Gor*_*off 5

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

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

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

insert into X(a) values ('a');
insert into X(a) values ('b');
insert into X(a) values ('c');
Run Code Online (Sandbox Code Playgroud)

insert into X(a)
    select 'a' union all select 'b' union all select 'c';
Run Code Online (Sandbox Code Playgroud)

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