2

我对 mysql 的后端没有经验,并且遇到以下情况。

每天晚上我都有一个脚本来关闭我们的 mysql 数据库并将 mysql 文件夹同步到另一个。然后打开mysql。

稍后,通过 bash 脚本或 Web 应用程序访问 mysql。

每次重新启动后,通过 bash 脚本或 webapp 传入的前几个查询非常慢(需要 10 秒的东西需要 3 分钟)。一旦慢查询完成或超时,查询将以正常速度运行。此外,当我通过命令行登录 mysql 时,一切都很好,查询以预期的速度运行。

我认为减速是因为通常MySQL 在我登录时读取所有表信息(假设没有使用 -A 选项)或在第一个查询已经访问了必要的元表信息之后。

我的问题是:如何通过 bash 脚本加快此过程,从而避免缓慢的查询/手动登录?我只是在必要的表格上做一个虚拟选择,还是有更聪明的方法来获取表格信息?

环境:

  • CentOS 5.8
  • 带有 MyISAM 引擎的 Mysql 5.1

谢谢!

4

3 回答 3

2

我推测查询时间如此长的延迟是由于重新启动服务器时页面缓存被清空。查询运行后,表将加载到页面缓存中,并且一切运行得更快。

第一个建议是为较大的表重新加载页面缓存。. . select * from <table>你可以通过在你的脚本中做一个来做到这一点。

但是,这提出了一个问题:为什么查询要进行全表扫描?如果是这样,您可能有机会通过使用索引来加快查询速度。

于 2012-09-11T01:20:54.797 回答
1

您的查询缓存可能太大或碎片化。

看看这个有助于调整数据库的指南。

于 2012-09-11T01:18:18.867 回答
1

听起来您的数据库正在丢失其缓存查询。也许尝试使用存储过程来查询您需要在第一次运行时快速运行。

于 2012-09-11T01:15:06.847 回答