我有一个MySQL后端,MS接入前端系统,它在本地网络上很好,响应能力很强,但在宽带连接上却变得迟钝。到目前为止,我还没有进行任何性能优化。我应该使用哪些推荐的工具和优化方法?
最近,我发现MySQL保存了一个“通用查询日志”。也许我可以监视这个日志文件中的更改,以查看对服务器的实际请求。这是一个很好的微调方法吗?
发布于 2011-05-27 13:51:39
一个好的起点是MySQL慢速查询日志,而不是一般的查询日志。您可以设置
你会想要不使用索引的日志查询
在您的问题更新中,您指出系统在本地网络上“友好且响应”,但是您还没有进行任何性能调优。我指出的缓慢查询日志将帮助您识别需要很长时间才能运行的查询(如果以这种方式配置,则超过1秒)。海事组织,这是一个很好的起点。查询所需时间越长,当响应必须通过广域网传输时,情况就会更糟。
我最近发现的一个工具是模型,它分析来自tcpdump的输出,以帮助度量请求响应所需的时间。您可以看到有多少请求/响应出现,以及每个请求/响应需要多长时间。对广域网进行优化的最佳方法是减少所需请求的数量。
发布于 2011-05-27 12:02:35
你在使用交易吗?
行上的延迟影响事务的锁定时间。
这将大大降低数据库性能。
也尝试使用MySQL运行--skip-name-resolve
http://dev.mysql.com/doc/refman/5.0/en/dns.html
我不知道你的源代码。如果您使用的数据库操作在前端风格也是不好的,特别是如果有一个高延迟网络。在这种情况下,尝试一次获得所需的数据,当然,只获取所需的数据。
发布于 2011-05-28 00:01:39
我给您写了几篇很好的文章,可以用来从各个方面调优MySQL。跟他们玩得开心!
更新2011-05-28 06:43
确保取消使用"SELECT * FROM tbl .“从你的申请。将它们替换为“选择column1,column2,.从tbl .”。这样,就可以减少通过网络传输的数据量。
减少存储过程调用的次数(也调优存储过程中的SQL命令),特别是当应用程序依赖于客户端数据处理时。如果您可以将一些BI方面移到存储过程中,也将减少网络延迟。
如果您正在使用MySQL复制,请确保主和从服务器位于同一子网中。事实上,在192.168.x.x上使用交叉电缆。让奴隶使用192.168.x.x。作为主主机的主网络的子网。在数据中心之间的复制方面,您应该使用分布主拓扑只传输二进制日志,这将从主服务器卸载该函数。
更新2011-06-13 17:10
您可能希望查看慢速查询日志,而不是普通日志。您可能需要将变量长_查询_时间更改为1秒(默认为10秒),以便查看哪些查询花费的时间超过1秒。然后,您可以对所有SELECT查询运行EXPLAIN,并希望找到每个表可能需要的索引。
如何安全地更改MySQL innodb变量‘innodb_日志_文件_尺码?
https://serverfault.com/questions/230551/mysql-innodb-innodb-file-per-table-cons/231400#231400
https://stackoverflow.com/questions/5174396/innodb-performance-tweaks/5348378#5348378 (仅限MySQL 5.5 )
https://dba.stackexchange.com/questions/2977
复制相似问题