我需要从数据存储中删除批量记录,我浏览了所有以前的链接,但所有人刚刚谈到从数据存储中获取实体然后逐个删除它们,我的问题是我有大约80K实体和每当我尝试使用数据存储区db.delete()方法时,read都会超时。
这里有没有人知道一种更接近SQL的方法来执行批量删除?
答案 0 :(得分:3)
您可以使用任务队列+ DB光标进行删除。
任务最多可以执行10分钟,可能需要时间来删除所有实体。但是如果需要更长的时间,你可以获得当前光标位置,并再次调用任务本身,将此光标作为参数,并从最后位置开始处理。
答案 1 :(得分:0)
定义您正在使用的API。 JDO? GAE? JPA?你引用一些db.delete,但将其标记为JDO;他们不一样。 JDO显然提供pm.deletePersistentAll(),如果想要更多,你可以使用Google Mapper API
答案 2 :(得分:0)
您可以使用Cloud Dataflow批量删除数据存储区中的实体。您可以使用GQL查询来选择要删除的实体: