我有使用mysql作为其数据库的PHP应用程序。应用程序并不重,通常会立即加载。它有管理页面,我可以在其中运行一些可能返回很长列表的查询。每天还有几次cron进程支持整个数据库。
我注意到,当备份或长时间运行(大约30秒)管理查询正在进行时,通常加载速度非常快的用户页面可能会超时或变慢。
服务器是单处理器虚拟机。我认为即使有另一个使用数据库的线程,它应该仍然响应慢2到3倍,而不是慢100倍。
那么我应该如何解决这个问题呢?我可以设置mysql查询的优先级,还是更多的PHP-Apache问题?我没有太多关于它的信息,因为它很少发生,大多数只是由用户报告。
我会很高兴任何提示从哪里开始寻找,因为我不想测试/调试生产站点,也不想安装测试环境。 感谢任何人
答案 0 :(得分:1)
如何进行备份? mysqldump的?
您使用的是MyISAM还是InnoDB?听起来像MyISAM?
无论我的问题的答案是什么,这都是你面临的问题:转储对磁盘的影响很大,而且很可能是RAM中的缓存耗尽。 (细节在很大程度上取决于答案。)这本身就会减慢速度。
此外,如果您使用的是MyISAM,则表将被锁定;这比使用InnoDB要糟糕得多。 InnoDB使用行锁并且侵入性较小,但不是免费的。
key_buffer_size和/或innodb_buffer_pool_size的设置与可用的内存的设置是什么?无论"缓存是否被烧毁,这些都会产生影响。