【问题标题】:Performance difference between querying with key_name and a property使用 key_name 和属性进行查询之间的性能差异
【发布时间】:2013-01-04 23:52:59
【问题描述】:

假设我有以下实体类型:

class ExampleModel(db.Model):
    name = db.StringProperty()

mdl = ExampleModel(key_name='blah', name='abcd')
mdl.put()

两者之间是否有任何性能差异

ExampleModel.get_by_key_name('blah')

ExampleModel.all().filter('name = ', 'abcd').get()

如果存在性能差异,(大约)是多少? ExampleModel 具有name 的索引对结果有何影响?

【问题讨论】:

    标签: python google-app-engine google-cloud-datastore


    【解决方案1】:

    是的,存在性能(和价格)差异。

    在查询情况下,您需要进行 2 次读取操作:

    • 在索引表中查找 1 次
    • 在实体表中查找 1 次

    在 get_by_key 情况下,您只执行 1 次读取操作:

    • 1 次查找实体表

    另请注意,索引属性也会影响写入性能和成本,因为您需要在索引表中执行 1 次额外写入才能到达索引属性。

    请随时查看this presentation,了解有关数据存储区性能模式和反模式的信息。通过单击每侧的Run 按钮,您可以看到每个代码 sn-ps 的交互式 appstats 跟踪。

    【讨论】:

      猜你喜欢
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多