数据存储读取操作计算
Posted
技术标签:
【中文标题】数据存储读取操作计算【英文标题】:Datastore Read Operations Calculation 【发布时间】:2013-04-11 09:04:48 【问题描述】:因此,我目前正在执行一项测试,以估计我的 Google 应用引擎可以在不超过配额的情况下工作多少。 这是我的测试:
我在数据存储中有一个实体,根据我的本地 仪表板,需要 18 次写入操作。我有 5 个此类条目 在一张桌子上。 每隔 30 秒,我会获取上述 5 个实体。我做 不要为这些使用 MEMCACHE !!!这意味着 5 * 18 = 90 次读取操作,每次读取对吗? 在 1 分钟内意味着 180 次,在 1 小时内意味着 10800 次读取操作......这是每日限制配额的 ~20%......
但是,在我的测试运行 1 小时后,我注意到在我的在线仪表板上,只使用了 2% 的读取操作......我的问题是为什么会这样?......我的缺陷在哪里计算?
另外...我可以在在线仪表板的哪里看到一个实体需要多少读/写操作?
谢谢
【问题讨论】:
【参考方案1】:对您的实体进行一次写入可能需要 18 次写入,但对您的实体执行一次操作仅需 1 次读取。
因此,如果您在一小时内每 30 秒获得 5 个条目,那么您将有大约 5 个读取 * 120 = 600 个读取。
这是在您对 5 个条目进行 get 的情况下。 (获取带有它的 id 的条目) 如果您进行查询 来获取它们,则成本为“1 次读取 + 1 次读取每个检索到的实体”。这意味着每个条目有 2 次读取。所以一小时内读取了大约 1200 次。
如需更多详细信息,请点击documentation 估算费用。
您无法在仪表板上看到一个实体需要多少次写入/读取操作。但我邀请您查看appstats。
【讨论】:
好吧,我想我明白了……有一件事我不知道……可以说我有一个包含 1000 个实体的表……我做了一个需要检索的查询只有 5 个...这需要多少次读取?...在您给我的网站上指定了类似的内容...我不明白:注意:指定偏移量的查询需要为除了返回的结果之外,跳过的结果数。 如果您使用“WHERE”条件执行 GQL 查询,并且此查询检索 5 个条目,则成本为每个条目 2 次读取。但是,如果您使用“WHERE”和“OFFSET”执行 GQL 查询,则成本为您检索的每个条目的 2 次读取 + 2 次读取 * 从偏移量中忽略的条目数。 为什么要使用 OFFSET ?从我快速阅读的内容来看,限制返回的行数?我的代码中的内容是这样的:cls.all().filter('was_accepted =', true)
...所以基本上所有具有该条件的行...我假设我在这里没有使用 OFFSET 对吗?
不,您没有在代码中使用 OFFSET。你只是过滤,所以没关系。
@PatrickDura 有什么方法可以知道哪个实体在项目中的阅读时间更长?以上是关于数据存储读取操作计算的主要内容,如果未能解决你的问题,请参考以下文章