暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle DBMS_AQ.DEQUEUE

askTom 2018-09-06
377

问题描述

嗨,汤姆,

您能否解释一下dbms_aq.dequeue中使用的出队选项dbms_aq.remove和dbms_aq.remove_nodata之间的区别。

2.dbms_aq.dequeue是否会生成比普通delete语句更多的recolog日志

建议使用MSG_ID或dbms_aq.dequeue使用MSGID删除队列表。
你能建议我吗?


谢谢。

专家解答

1) 来自

https://docs.oracle.com/database/121/ADQUE/aq_intro.htm#CHDCEDDG

当使用REMOVE_NODATA模式对消息进行出队时,不会检索消息的有效负载。当用户已经检查了消息有效负载 (可能是通过先前的浏览出队) 时,此模式可能会很有用。

因此,实际上我们是在没有收到消息的情况下出队,因为我们要么已经有了,要么不关心它。

2) 并非如此。它类似于在带有几个索引的表上删除 (因为在封面下,这是我们实现消息存储的方式)

不要每个人都针对队列表直接执行DML,因为我们保留随时更改实现的权利。有一天,除了消息等之外,我们可能会在MSG_ID列中存储 * 其他 * 内容。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论