代码之家  ›  专栏  ›  技术社区  ›  Tom Lianza

在数据库内存化-一个好主意?有什么经验吗?

  •  2
  • Tom Lianza  · 技术社区  · 16 年前

    基本上,我有一些SQL查询速度很慢,很大程度上是因为它们的子查询非常耗时。例如,他们可能会做一些事情,比如“给我统计一下10-15岁男孩骑的所有红色自行车”。这是昂贵的,因为它通过所有的自行车,但最终的结果是一个单一的数字。而且,在我的情况下,我真的不需要这个数字是100%最新的。

    这类问题的最终解决方案似乎是应用一个基于OLAP的引擎来预缓存这些排列。然而,在我的例子中,我并不是真的试图围绕大量的度量来分割数据,我也不希望在运行另一个进程/数据存储时使我的体系结构复杂化。

    所以我的想法基本上是将这些子查询存储在数据库中。我可能有一个名为“BicycleStatistics”的表,它可能将上面的子查询的输出存储为输入和输出的名称-值对。

    Ex name:“c泳red泳g泳male泳a泳10-15”值:235

    并且有一种机制,在查询运行时将这些值存储到该表中。

    有没有人在这种情况下尝试过类似的事情?我认为这样的解决方案比“在数据库中投入大量RAM,让数据库来处理”更有价值的原因是(a)我的数据库比我可以方便地投入的RAM要大,(B)数据库将确保我得到这些统计数据的准确数字,我的大胜利,如上所述,我认为这些数字已经过时一两天了。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Tony Andrews    16 年前

    Materialized views 如果您的DBMS支持,则是实现此需求的一种方法。