Axo*_*xon 2 mysql performance networking
我们的应用程序通过VPN隧道连接到Web服务器上的MySQL数据库.问题是,由于网络延迟,应用程序和远程数据库之间的所有交互都非常慢.我使用sysbench测试了网络上的MySQL性能,它显示每个查询花费将近1秒.从应用程序更新DB中的300多行需要20多分钟.
如何在不将服务器移近客户端的情况下改善网络上的数据库性能?通过慢速网络进行数据库查询的最佳做法是什么?
如果问题是网络延迟(而不是网络带宽),那么解决方案是将尽可能多的代码移动到数据库中.
也就是说,设置存储过程来完成工作,而不是逐行编写代码.实质上,存储过程处理多行代码,只有一次往返数据库的开销.
这需要智能设置,特别是如果您必须将数据传递到存储过程中.考虑以下两种做同样事情的方法:
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)
第一次需要三次往返,因为有三个独立的声明,第二次只有一次往返.在以延迟为主的环境中,第一个将比第二个环境长三倍.
| 归档时间: |
|
| 查看次数: |
2086 次 |
| 最近记录: |