什么是好/健康的mysql查询执行时间?

时间:2014-06-26 11:29:19

标签: mysql sql database

什么是好/健康的mysql查询执行时间?

根据我的计算:

  

该网站每小时可获得1000个唯一身份访问者

     

每个唯一身份访问者的10页视图

     每个独立访客5分钟(我忽略了这一点。我应该,   右?)

     

1000 * 10 = 10000 /(60 * 60)=每秒2.7次视图。

     

我在每个页面上都有3个查询。 2.7 * 3 =每秒8.1次查询

     

1秒/ 8.1 = 0.123

因此平均查询执行时间必须小于0.123。

假设访问量没有增加,我们可以说少于0.123的数据适用于健康的数据库吗?

编辑:我了解到这个模型会描述一个容量为100%的服务器,但我应该瞄准25-50%的容量。我是新手,我不知道如何继续这个。

2 个答案:

答案 0 :(得分:4)

您的计算是在正确的路径上确定服务器上的负载。但是,它错过了数据库服务器可以同时处理多个查询的事实。

这是“带宽”和“延迟”之间的差异。 “带宽”是在一段时间内可以处理的查询数。 “延迟”是从一个查询中获取结果所需的时间。

通常,当您查看用户的返回值时,您希望查询的数据库部分在不到几百毫秒(可能在几十毫秒内)内完成。这允许UI的其他组件 - 特别是网络,还有应用程序端逻辑 - 在一两秒内返回。这通常是许多应用程序的合理响应时间。您应该为您的应用选择合适的值 - 50毫秒,100毫秒,200毫秒 - 然后设计数据库和硬件以实现该目标。

您通过多种策略完成了这些时间,特别是关注索引以加速数据库搜索以及将常用数据保存在内存中。

答案 1 :(得分:0)

很难做出准确的预测:

  • 查询具有不同的复杂性
  • 部分执行时间是没有点击数据库引擎的开销
  • 并行查询必须按顺序排列到通用硬件
  • 性能高度依赖于索引和缓存。

我首先关注应用程序,当我发现性能不足时,优化。一些想法,为了越来越绝望:

  • 如果应用程序进一步减少返回的数据,请将它们移动到数据库中
  • 为最常见的查询类型创建索引
  • 使用可以使用原始分区的数据库引擎,删除文件系统层
  • 将索引移至SSD
  • 在RAID1上存储数据库表(您应该这样做)
  • 预先计算视图