如何在不添加索引的情况下更快地进行数据存储查询

时间:2017-11-13 09:49:53

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

我有以下简单查询:

 client = datastore.Client('fmy_project')
 query = client.query(kind='kind1')
 query.add_filter('x', '=','y')
 for row in query.fetch():
   #process the row and save to file

从本地计算机工作时,我需要100行5秒才能获取结果。这非常慢。

当我在python进程上进行strace时,我会得到很多行:

  

recvmsg(9,0x7ffffc9ee9f0,0)= -1 EAGAIN(资源暂时不可用)

     

民意调查([{fd = 8,events = POLLIN},{fd = 9,events = POLLIN}],2,200)= 0(超时)

有没有办法说数据存储一次性获取所有内容或进行某些其他优化?

我用Google搜索并没有找到任何相关选项

1 个答案:

答案 0 :(得分:1)

你是说只需要5秒才能获取?不在最后处理for循环中的数据?

通常情况下,如果你更好:

  1. 获取数据( fetch返回数据列表
  2. 处理返回列表本身的数据(不保存到循环中的数据存储区!
  3. 使用“ put_multi
  4. 一次保存多行
      

    ndb.put_multi(数据列表

    请参阅此处的文档:https://cloud.google.com/datastore/docs/concepts/entities#batch_operations