动态或预先计算数据

时间:2011-04-12 03:55:29

标签: mysql

编程有点新,并且有一个我刚才想到的一般性问题。

说,我有一个包含大量股票信息的数据库,一个列有价格,另一个有收益。要获得价格/收益率,每天计算它还是按需计算它会更好吗?我认为性能明智,它只是更快阅读,但我想知道数学类型函数是否值得批量工作预先计算它(它是否甚至引人注目?)。

那么专业人士如何做呢?让应用程序处理它们的数据还是已经在数据库中使用它?

3 个答案:

答案 0 :(得分:2)

专业人士使用各种方法。这一切都取决于你的目标。是否需要立即显示新的实际比率?核心数据多久变化一次?理想情况下,您只需在价格或收入变化时计算比率,但这需要额外的开发,如果您在网站上没有大量活动,则可能不值得。

另一方面,如果你每分钟都收到数百次访问,你肯定会想要缓存你正在计算的任何内容,因为重新显示缓存结果所需的时间远不如重新创建结果(在大多数情况下)。

但是,作为一般的经验法则,不要试图优化您没有预料到任何性能问题的东西。

答案 1 :(得分:1)

将统计数据作为单独的表保持为那些只读模式会很好。您可以直接使用SQL函数计算avarage,max,min值并保存它们。同时,对于当前时段(日),您可以动态计算并显示它。这些统计信息可用于报告或预测。

答案 2 :(得分:1)

预先计算的值(当然)更快。

但是,这一切都取决于要求本身。

  • 是否会经常调用此值?如果经常调用它,那么使用预先计算的值将带来巨大的优势。
  • 计算真的需要很长时间和/或巨大的资源吗?如果是这样,使用预先计算将有所帮助。

请记住,有时一个缓慢的过程或大量的资源消耗是由编程实现本身引起的,而不是由错误设计的系统引起的。