有没有人尝试在 GAE 上实现悲观锁定?在我的项目中,有些任务必须是相互排斥的。我已经通过使用:
javax.persistence.EntityManager.find(entityClass, primaryKey, LockModeType.PESSIMISTIC_READ);
哪个使用 SELECT FOR UPDATE 查询数据库,哪个运行良好……只要只有一个应用程序实例正在处理请求。如果有更多实例,我的请求将部分同时处理。
我已经通过在我的互斥方法中添加 10 秒的睡眠来对此进行测试。对于一个实例,在大约 60 秒内处理了 6 个请求,但对于 3 个实例,有时是 20 个,有时是 30 个,但从来没有 60 秒。
这是否意味着 CloudSQL 不会在 SQL 实例之间复制锁?有没有其他方法可以在表行上实现悲观锁定?
布雷马雷克