这似乎是一个显而易见的问题,但我们有一个在Windows 2008服务器上运行的PHP / MySQL应用程序。该服务器总共有大约10个不同的站点。有问题的站点上的管理员选项允许管理员运行报告(通过站点),这些报告很大,在某些情况下可能需要大约10分钟。这些报告是在屏幕上显示数据的巨大mysql查询。当这些报告运行时,整个站点对所有用户来说都很慢。所以我的问题是:
非常感谢提前。
答案 0 :(得分:1)
你在服务器上放置的负载很可能与应用程序无关,而是你可能正在关闭的mysql表。大多数人通过在停机时间生成报告或使用mysql复制来创建第二个纯粹用于报告的数据库来解决这个问题。
我建议尝试进行一些服务器监控以查看实际情况。我认为Newrelic刚刚发布了其平台的Windows版本,你可以免费试用30天。
答案 1 :(得分:0)
我强烈建议您安装一个复制的MySQL服务器,然后在其上运行大型管理员查询(仅自然选择),以避免阻止您的网站的负担! 如果每秒没有太多的事务,您甚至可以从生产服务器远程在桌面计算机上运行副本,从而在数据库的外部备份!
答案 2 :(得分:0)
有LOW_PRIORITY
标志,但我不确定这是否会产生任何积极影响,因为它很可能是您遇到的表/行锁定问题。您可以使用SHOW PROCESSLIST;
查询了解正在发生的事情。
如果其他网站运行正常,则更有可能是因为数据库锁定(导致您的Web进程等待锁定被释放)。
最后,始终建议在一夜之间(或当服务器负载最小时)运行大型报告查询。拥有read replicated slave也会有所帮助。
答案 3 :(得分:0)
您是否100%确定已添加所有必要的索引?
除非您缺少索引,否则您需要拥有一个疯狂的大型网站来解决此类问题。
确保您拥有正确的索引,并确保您没有varchar的连接字段,而且速度不是很快。
我有一个数据库,里面有很多大表和数百万条全天候运行的记录。
由于正确的索引,有大量的活动和自动化服务处理它没有问题。