1

这个奇怪的案例在过去的两天里已经发生了两次。

我使用 Datastore Admin 删除了不超过 100 个的所有实体,以便稍后使用重新上传 db,remote_api_shell但在请求后Datastore 写入操作达到限制:

在此处输入图像描述

这是自上次 24 小时重置以来我所做的第一次也是唯一一次操作。

remote_api_shell当我尝试put新实体时也会报告错误。

欢迎任何建议。


编辑:

这里的模型,没什么大不了的......

class Brand(BaseModel):
    '''
    Brand class
    `Marca` in Etax db
    '''
    name = db.StringProperty()
    abbr = db.StringProperty()

    def __repr__(self):
        return ('<Brand {0} instance at {1}>'
                    .format(self.abbr.encode('utf-8'), hex(id(self))))

class Model(BaseModel):
    '''
    Model class
    `Gamma` in Etax db
    '''
    name = db.StringProperty()
    code = db.IntegerProperty()
    brand = db.ReferenceProperty(Brand, collection_name='models')

    def __repr__(self):
        return ('<Model {0} instance at {1}>'
                    .format(self.code, hex(id(self))))

class TrimLevel(BaseModel):
    '''
    Trim Level class
    `Modello` in Etax db
    '''
    name = db.StringProperty()
    etax_code = db.IntegerProperty()
    start_production_date = db.DateProperty()
    end_production_date = db.DateProperty()
    retail_buy_prices = db.ListProperty(int)
    retail_sell_prices = db.ListProperty(int)
    list_prices = db.ListProperty(int)
    model = db.ReferenceProperty(Model, collection_name='trim_levels')
    fuel_supply = db.StringProperty()
    gear_shift = db.StringProperty()
    gear_speeds = db.IntegerProperty()
    doors = db.IntegerProperty()
    seats = db.IntegerProperty()
    kw = db.IntegerProperty()

    def __repr__(self):
        return ('<TrimLevel {0} instance at {1}>'
                    .format(self.etax_code, hex(id(self))))

在此处输入图像描述

4

1 回答 1

1

如果您查看billing docs,那么高级删除需要几个低级写入操作:

Entity Delete (per entity): 2 writes + 2 writes per indexed property value + 1 write per composite index value

因此,如果 100 个实体删除使用了 50k 写入操作,则意味着您的每个实体都有 500 个索引条目。

当实体具有大型列表属性或具有跨越多个列表属性的复合索引(= 爆炸索引)时,可能会发生这种情况

您是否定义了任何复合索引?您的实体有哪些属性?

于 2013-02-14T15:16:04.143 回答