php查询远程数据库很慢怎么办?

  • 我部署了一个typecho博客应用,我的项目和数据库不在一个服务器,每次刷新详情页要2秒左右加载完毕,我把数据库迁移到跟项目一个服务器,刷新详情页只需要200毫秒。
  • 我看了下日志,时间主要浪费在执行sql那,执行的sql大概有20条左右,但数据量并不大,而且服务器A ping 服务器B延迟也很低,为什么速度差别会这么大?有什么办法解决?
  • 已经尝试过在远程数据库配置加入 skip-name-resolve 并没有什么效果

刚刚又仔细看了下日志,总共执行了47条sql。。


刚刚又用python写了个脚本执行那47条sql,在本地执行脚本用时2秒左右,在数据库所在服务器执行用时167毫秒,看来是mysql的问题,跟php没关系

阅读 3.9k
2 个回答

一个部署在腾讯云,一个阿里云,说明机器本身就跨机房,而且还可能跨地域,数据延迟是正常的,消耗的时间都在传输过程中,建议都部署在同一个服务器上吧
正常企业会把应用和数据库部署在不同服务器,防止互相干扰,但前提是,应用服务器和数据库服务器是放在同一个机房,应用连接数据库直接走内网,一来是响应速度,二来是如果走外网本身就暴露一个数据库端口3306让人攻击。

最好还是把数据库迁移到代码服务器上,如果确实有无法迁移的理由,你可以自己写一个缓存函数,每次发布,或修改文章成功后查询文章详情,把数据缓存到本地,前台查询的时候就查缓存数据。
可以以文件形式缓存,适合小数据量。如果数据量很大可以使用reids进行缓存。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题