【发布时间】:2018-04-05 15:20:43
【问题描述】:
我正在使用带有 Python 客户端 google-cloud-happybase 包的 Google Cloud Bigtable 开发实例。
出于开发目的: -我的表有 56.5k 行,18 列。
-我的表有 1 个列族
-每个行元素的平均大小为 9.5 字节。
-行键平均约为 35 个字节
-行键是平衡的。
当我在我的表上使用 scan() 函数时,我得到了一个生成器,可用于获取每个行键的内容。每当我从生成器中读取内容时,我都没有时序一致性,例如:
samp = table.scan(columns = ['sample_family:ContactId'])
for i in range(56547):
start_time = timeit.default_timer()
samp.next()
elapsed = timeit.default_timer() - start_time
append_list.append(elapsed)
-调用next()的中位时间是4.05e-06秒
-调用 next() 的最长时间为 0.404 秒,多次调用至少需要 0.1 秒。
-由于异常值,对生成器中的所有元素调用 next() 的总时间为 2.173 秒,考虑到时间分布,理想情况下需要 (4.05e-06)* 56,547 ~ .229 秒正态分布。
显然有几个异常值会影响性能。
我的问题是为什么我会看到这种类型的性能,因为它与此处找到的指标不一致: https://cloud.google.com/bigtable/docs/performance
我的想法是,由于工作负载明显小于
此外,即使我的 Development 实例使用 1 个节点,大小为 17.1MB,我觉得这应该不是问题。
-我想知道是否有人可以让我了解遇到的问题/问题以及解决这种情况的可能步骤。
【问题讨论】: