写太频繁,数据存储争用超时

时间:2010-02-09 01:15:55

标签: java spring google-app-engine google-cloud-datastore

我读过app engine wiki,如果写得太频繁,就会遇到数据存储争用 1秒内超过5次。维基介绍使用“碎片” 接近“作为解决方法。我可以知道我们是否使用spring @transactional 在此,这可以防止数据存储区争用超时 写作同时完成?

2 个答案:

答案 0 :(得分:1)

不,你不能这样做。无论你是否使用@transactional,它都不会让问题消失 - 事实上你有一个你需要继续写的对象。无论您使用何种方法,争用限制将继续保留。

这个问题的答案实际上是决定你想做什么,以及准确性对你有多重要。以一个简单的计数器为例,这是这个问题的常见例子。如果您认为准确性非常重要,那么您必须有一个计数器列表,您可以按顺序或随机选择并写入。如果此列表中有十个计数器,那么每秒可以提供更多的写入次数,甚至是事务性写入。但是,您需要编写代码来选择要写入的计数器。

另一方面,如果你不需要太高的精度,你可以尝试经常写入memcache。写入memcache或递增计数器时,写入争用限制要高得多。然后,您可以按设定的间隔写出并重置计数器。

答案 1 :(得分:1)

当我在一个需要将大量个人记录存储到DB的项目中时,我发现系统无法处理所有并发事务。我改为在内存中构建对象,然后将所有对象保存到数据库中。