我正在閱讀Google App Engine組中的許多用戶(Fig1,Fig2,Fig3),他們無法確定數據存儲的大量數據存儲在其結算報告中的讀數來自何處。
正如您所知,Datastore reads的上限爲每天5萬次操作,超出此預算需要支付。有多少數據存儲區讀取消耗每個讀取,計數和查詢操作?
50K操作聽起來像很多資源,但不幸的是,似乎每個操作(Query,Entity fetch,Count ..)隱藏了多個Datastore讀取。
是否可以通過API或其他方法知道有多少數據存儲區讀取隱藏在通用RPC.get
,RPC.runquery
調用之後?
Appstats在這種情況下似乎沒用,因爲它只給出了RPC細節而不是隱藏的讀取成本。
有一個簡單的模型是這樣的:
class Example(db.Model):
foo = db.StringProperty()
bars= db.ListProperty(str)
和實體在數據存儲中,我感興趣的是這幾樣操作的成本:
items_count = Example.all(keys_only = True).filter('bars=','spam').count()
items_count = Example.all().count(10000)
items = Example.all().fetch(10000)
items = Example.all().filter('bars=','spam').filter('bars=','fu').fetch(10000)
items = Example.all().fetch(10000, offset=500)
items = Example.all().filter('foo>=', filtr).filter('foo<', filtr+ u'\ufffd')
我認爲每個返回的實體都是一個讀取,如果你有一個ref的道具,那麼你第一次訪問它也是一個讀取。請注意,提取(X)並不意味着如果計數太高,則會返回X個實體,那麼它將以批量處理,並且每個批量將計爲數據讀取(批量大小)。我不知道count(X)如何在數據讀取方面工作,它應該算作單個讀取,但它是一個一廂情願的想法。 –