实体中的大量属性会影响数据存储区的读/写性能吗?
Posted
技术标签:
【中文标题】实体中的大量属性会影响数据存储区的读/写性能吗?【英文标题】:Does having large number of properties in an Entity effect datastore read/write performance? 【发布时间】:2010-07-02 13:06:35 【问题描述】:我有几个属性编号在 40 到 50 之间的实体。所有这些属性都未编入索引。这些实体是更大的实体组树结构的一部分,并且总是通过使用它们的键来检索。没有任何属性(除了 key 属性)被索引。我正在使用 Objectify 来处理 BigTable 上的实体。
我想知道在从 BigTable 读取或写入具有大量属性的实体时是否会影响性能。
由于这些大型实体仅通过它们的键获取,从不参与任何查询,我想知道是否应该序列化实体 pojo 并将其存储为 blob。在 Objectify 中使用 @Serialized 注释非常简单。我知道通过序列化我的实体并将其存储为 blob,我使 blob 对任何其他程序或非 Java 代码完全不透明,但这不是问题。
我尚未对性能差异进行基准测试,但在此之前,我想知道是否有人以前做过此操作或有任何建议/意见要分享。
【问题讨论】:
【参考方案1】:属性数量总是存在开销的。并且序列化不会有太大帮助,因为它只是将处理从一个点转移到另一个点。
我拥有最多 25 个属性的实体,我几乎在所有请求中都通过密钥获取它们。性能差异对我来说可以忽略不计。几乎没有 +- 1 毫秒。性能问题通常发生在查询部分。 未编入索引的 属性的数量在性能上不会很重要。而索引属性由于索引的修改会显着延迟放置。
如果你必须,如果你不打算一次需要它们,你可以把它们分成多个表。
【讨论】:
【参考方案2】:纯粹根据我对它的工作原理知之甚少,我想说拥有一堆未编入索引的属性与将整个事物序列化并没有什么不同。
【讨论】:
以上是关于实体中的大量属性会影响数据存储区的读/写性能吗?的主要内容,如果未能解决你的问题,请参考以下文章
Core Data 可以在 iOS 上延迟获取 BLOB 属性吗?