- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开展一个项目,我们收集(last_x, counters )关于帐户的信息。用户操作可能会导致生成多个业务事件。当 web 上的单个用户操作导致多个事件时,它将触发对 USER HISTORY 表的更新。
我们进行乐观锁定以确保所有事件都会更新 USER HISTORY 表。
问题:
乐观锁会导致额外的读取(当检测到冲突时,再次读取并更新)和额外的写入(在解决冲突之后)。
尝试过的解决方案:
还有其他选择吗?
最佳答案
是否有压倒性的需要在此表上读取性能?
在我看来,这就像是某种“工作日结束”/大约每小时一次,客户资料/情报表。如果是这种情况,那么您可以只使用插入并考虑数据仓库技术,例如 Star Schema照顾事物的 (last_x, counters) 方面。
如果它更重要并且更依赖于时间,那么您的模式可能不适合这项工作。您是否考虑过使用消息传递中间件,例如 JMS通知和触发其他业务事件?
自从您使用 Oracle 以来,您可以查看:Oracle AS
[编辑] 根据讨论,您有一个计数器信息的实时生产者/消费者。我不认为数据库是解决这个问题的基本方法。出于会计目的,您可能需要保留柜台,因此您可能需要这样的东西:
生产者:init(从数据库重建 session /memcached)
RECV 用户操作 X -> session /Memcached(ActionX) + 插入到数据库。
消费者:运行(检查 session /memcached 的条件,行动)
您甚至可以让用户历史计数器的消费者成为生产者在计数器达到 X 时触发的事件的订阅者,并消除消费者对 USER HISTORY 的依赖
关于java - 是否有乐观锁定的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832135/
我正在编写一个 Web 应用程序,两个不同的用户可以在其中更新事物列表,例如待办事项列表。我已经意识到,乐观锁定机制效果最好,因为我不希望出现高争用情况。 我一直在查看事务隔离级别,现在我有点困惑。看
这个问题在这里已经有了答案: Pessimistic versus Optimistic Concurrency (Locking versus Feedback) (3 个答案) 关闭 8 年前。
我是一名优秀的程序员,十分优秀!