2020-09-12 17:53发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在我的应用程序中,由于同时访问同... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
在我的应用程序中,由于同时访问同一对象,我们遇到了会话阻塞的问题。 这是由于查询速度慢或运行时间长所致。 为了防止阻止会话,我们尝试应用锁定等待超时。 锁定等待超时可能在mysql结束。 但是如何在oracle或hybris端完成相同的操作。 请指教。 我们需要这个答案。
您被阻塞的会话不是因为并发访问,而是由于同一对象(表中的行)的并发修改。 发生这种情况不是因为缓慢或长时间运行的查询,而是由于您构造应用程序代码的方式。 示例:线程A修改购物车条目1,然后尝试修改购物车条目1所属的cBC,同时线程B修改cBC并尝试修改购物车条目1-它们每个都持有1个锁,并且都期望 由另一个线程保留的锁。 重要提示:只有当两个修改都在相同的交易范围内完成时,才会发生这种情况,否则每个修改都将独立完成,并且效果将不可见。
可以通过显式调用modelService.lock(model)方法(必须在正在运行的事务中进行!)或通过在事务内部再次使用modelService持久操作来完成从DB行的Hybris端进行"锁定"。 因此,在事务尚未完成之前,锁不会(永远)释放,并且为了控制Oracle DB方面的超时,您必须采用Oracle 资源管理器计划和配置文件管理-有关此主题,请咨询DBA。
最多设置5个标签!
您被阻塞的会话不是因为并发访问,而是由于同一对象(表中的行)的并发修改。 发生这种情况不是因为缓慢或长时间运行的查询,而是由于您构造应用程序代码的方式。 示例:线程A修改购物车条目1,然后尝试修改购物车条目1所属的cBC,同时线程B修改cBC并尝试修改购物车条目1-它们每个都持有1个锁,并且都期望 由另一个线程保留的锁。 重要提示:只有当两个修改都在相同的交易范围内完成时,才会发生这种情况,否则每个修改都将独立完成,并且效果将不可见。
可以通过显式调用modelService.lock(model)方法(必须在正在运行的事务中进行!)或通过在事务内部再次使用modelService持久操作来完成从DB行的Hybris端进行"锁定"。 因此,在事务尚未完成之前,锁不会(永远)释放,并且为了控制Oracle DB方面的超时,您必须采用Oracle 资源管理器计划和配置文件管理-有关此主题,请咨询DBA。
一周热门 更多>