我们有通过VPN隧道连接到web服务器上的MySQL DB的应用程序.问题是,由于网络延迟,应用程序与远程DB之间的所有交互都非常缓慢。我使用sysbench在网络上测试了MySQL的性能,结果显示每个查询几乎需要1秒。从应用程序中更新DB中的300+行需要20+分钟。
如何在不使服务器靠近客户端的情况下提高网络上的DB性能?在慢速网络上查询DB的最佳实践是什么?
发布于 2013-12-15 16:10:08
如果问题是网络延迟(而不是网络带宽),那么解决方案就是尽可能多地将代码移到数据库中。
也就是说,设置存储过程来完成工作,而不是逐行编写代码.存储过程本质上处理多行代码,只需要一次往返到数据库的开销。
这需要智能设置,特别是当您必须将数据传递到存储过程中时。考虑以下两种做同样事情的方法:
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';第一次需要三次往返,因为有三次独立陈述,第二次只有一次往返。在以延迟为主的环境中,第一个环境的长度将是第二个环境的三倍。
https://stackoverflow.com/questions/20596541
复制相似问题