作者 GAE Datastore性能测试(2): 写操作
Chris1919
2009-03-21 14:00
前面已经对datastore读操作进行过性能测试。今天又测试了下datastore写操作性能。

测试1:
测试的代码也很简单,主要一行代码:
TagInfo.get_or_insert(key_name = tag, name = tag)
TagInfo的定义在这里。这里tag是从url中直接取过来的。get_or_insert是Model的方法,包含transaction。结果再次让我大跌眼镜,这句代码耗时744ms-cpu。

测试2:
我把transaction去掉,测试代码是:
tag_info = TagInfo(key_name = tag, name = tag)
tag_info.put()
依然要耗时715ms-cpu。

测试3:
继续测了下批量更新数据,测试代码是:
items = range(0,10)
for item in items:
  tag = 'TAG_' + str(item)
  tag_info = TagInfo(key_name = tag, name = tag)
  tag_info.put()
耗时5928ms-cpu。

测试4:
换一个方法批量更新数据,测试代码是:
items = range(10,20)
tag_infos = []
for item in items:
  tag = 'TAG_' + str(item)
  tag_info = TagInfo(key_name = tag, name = tag)
  tag_infos.append(tag_info)
db.put(tag_infos)
耗时5809ms-cpu。

综上观察下来,数据写操作非常耗时,虽然我觉得读操作效率已经够差了,但写操作的效率还要差一个数量级。纵然GAE为了快速查询做了大量的index,但这种效率的话,一个request能做的数据更新有限,这个对应用的局限性很大。
Bookmark and Share