【问题标题】:Google App Engine - Tracking which indexes are usedGoogle App Engine - 跟踪使用了哪些索引
【发布时间】:2010-09-06 12:55:31
【问题描述】:

我有一个 App Engine/Python/Django 应用程序,该应用程序在过去一年中不断增长和修改,目前有 175 个索引。问题是我没有彻底清理/删除不再需要的索引。现在,我不确定哪些索引是活动的,哪些基本上是死的,但我猜大约 20% 的 idex 是无用的。

我很好奇是否有任何 App Engine 工具可用于跟踪/计算对索引的访问次数?

如果没有可用的工具,那么一个可能的想法是重载 fetch 方法以在每次访问索引时跟踪此信息,但我不确定这是否是一个好主意(可能会减慢速度)而且我不知道不知道实现这一点的最佳方法是什么。

如果有人已经经历过清理(搜索)死索引的经历,我很想听听您的经历。

【问题讨论】:

    标签: python database google-app-engine indexing


    【解决方案1】:

    App Engine SDK 会跟踪它以自动创建索引。删除你的 index.yaml,然后给你的应用一个很好的锻炼。只要您在测试中点击每个不同的查询,SDK 就会生成一个新的 index.yaml,其中仅包含您需要的索引。

    【讨论】:

    • 嗨尼克,谢谢你的回答——但我相信你指的只是开发服务器,对吗? ...我很好奇看到生产/直播系统的统计数据。尝试在测试服务器上执行所有索引组合需要大量工作,并且可能容易丢失特定组合,然后当我上线时会出现......
    • 是的,这仅在 SDK 上。但是,如果您不能锻炼整个应用程序,我怀疑您的预发布测试需要一些改进。当然可以检测生产环境以记录索引使用情况,但并非微不足道。请参阅我关于钩子的文章了解如何开始:blog.notdot.net/2009/11/API-call-hooks-for-fun-and-profit
    • 好极了,看起来可以满足我的需要。
    • 如果你愿意,我已经为 django 应用程序创建了一个钩子。 gist.github.com/1064635
    【解决方案2】:

    如果您使用 Nose 为您的应用程序设置了一个自动化测试套件,您可以使用我的插件 nose-gae-index。它使用 SDK 中的内部 IndexYamlUpdater 类,就像 Nick Johnson 在他的回答中提到的开发服务器过程一样。

    这样做的好处是您有一个完全自动化的过程来跟踪将来的索引创建和删除(更不用说具有良好覆盖率的测试套件的其他优点了)。

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 2011-06-16
      • 2016-03-04
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      相关资源
      最近更新 更多