我阅读了 App Engine wiki,如果过于频繁写入数据存储争用 1 秒内超过 5 次。维基介绍使用“分片” 方法”作为解决方法。我可以知道我们是否使用 spring @transactional 在这一点上,这可以防止数据存储争用超时,因为 写作同时完成?
最佳答案
不,你不能那样做。无论您是否使用@transactional,它都不会使问题消失——事实上您有一个对象需要继续写入。无论您使用什么方法,争用限制都将继续保持不变。
这个问题的答案实际上是决定你想做什么,以及准确性对你有多重要。以一个简单的计数器为例,这是这个问题的一个常见例子。如果您认为准确性非常重要,那么您将必须有一个计数器列表,您可以按顺序或随机选择这些计数器并将其写入。如果您在此列表中有 10 个计数器,那么每秒的写入次数将增加数倍,甚至是事务性写入。不过,您需要编写代码来选择要写入的计数器。
另一方面,如果您不需要太精确,您可以尝试经常写入内存缓存。写入内存缓存或在那里递增计数器时,写入争用限制要高得多。然后,您可以按设定的时间间隔写出并重置计数器。
关于java - 写入太频繁,数据存储争用超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226102/