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

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

我阅读了 App Engine wiki,如果过于频繁写入数据存储争用 1 秒内超过 5 次。维基介绍使用“分片” 方法”作为解决方法。我可以知道我们是否使用 spring @transactional 在这一点上,这可以防止数据存储争用超时,因为 写作同时完成?

最佳答案

不,你不能那样做。无论您是否使用@transactional,它都不会使问题消失——事实上您有一个对象需要继续写入。无论您使用什么方法,争用限制都将继续保持不变。

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

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

关于java - 写入太频繁,数据存储争用超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226102/

相关文章:

java - session.invalidate() 的奇怪问题

java - @CrossOrigin 不添加 Access-Control-Allow-Origin header

java - 服务器重新启动后,Spring Security Remember Me 还能工作吗?

python - 安装第三方库,以便在 Google App Engine 开发服务器内部和外部都可用

python - openid 和 oauth 一起?

java - Android SQLite 查询顺序问题

java - JFrame 中的自定义绘图不显示

Java数组解析

java - SpringXD 和 Spring Integration : Read from kafka topic every X minutes, 然后发送到另一个主题

node.js - Google App Engine Node.js 应用中 Firebase 项目的 serviceAccountKey.json 的安全路径