问题描述
伙计们,
我搜索了所有论坛,但没有找到任何线索。
我在表中有一个阶段,多个线程消耗它。
为了避免死锁,我使用这样的东西:
它工作正常,但线程没有达到10.000行的最大值。
就像:
螺纹1: 5000
螺纹2: 3000
螺纹2: 2000
我知道会发生这种情况,因为它们的行数是相同的,但是表有成千上万的行。我真正需要的是线程得到10.000行解锁每一步。
我尝试仅使用FETCH前10000行,但收到以下消息:
ORA-02014: 无法从具有DISTINCT、GROUP BY等的视图中选择更新。
你们能帮我吗?
谢谢你的那种。
我搜索了所有论坛,但没有找到任何线索。
我在表中有一个阶段,多个线程消耗它。
为了避免死锁,我使用这样的东西:
SELECT ID_MESSAGE, FROM TB_STAGE_IN S WHERE S.CD_STATUS = 0 AND S.ID_JOB_SCHEDULE IS NULL AND ROWNUM <= 10000 FOR UPDATE SKIP LOCKED;
它工作正常,但线程没有达到10.000行的最大值。
就像:
螺纹1: 5000
螺纹2: 3000
螺纹2: 2000
我知道会发生这种情况,因为它们的行数是相同的,但是表有成千上万的行。我真正需要的是线程得到10.000行解锁每一步。
我尝试仅使用FETCH前10000行,但收到以下消息:
ORA-02014: 无法从具有DISTINCT、GROUP BY等的视图中选择更新。
你们能帮我吗?
谢谢你的那种。
专家解答
在这里看看 “为什么” 以及如何解决它
https://asktom.oracle.com/pls/apex/asktom.search?tag=select-for-update-skip-locked
https://asktom.oracle.com/pls/apex/asktom.search?tag=select-for-update-skip-locked
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




