首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在基于分区列合并到分区表时,MERGE INTO语句是否锁定整个表?

在基于分区列合并到分区表时,MERGE INTO语句是否锁定整个表?
EN

Stack Overflow用户
提问于 2013-04-11 04:52:32
回答 1查看 9.7K关注 0票数 6

在我们的生产环境中出现一些性能问题后,我请求数据库管理员提供帮助。在提供帮助的同时,他们告诉我合并会锁定表,并建议我改用UPDATE语句。

根据我所读到的所有内容,我的印象是MERGE INTO和UPDATE具有相似的增量锁定模式。下面是我们的应用程序正在使用的MERGE INTO语句的一个示例。

代码语言:javascript
复制
MERGE INTO sample_merge_table smt
USING (
    SELECT smt.*, sjt.* 
    FROM sample_merge_table smt 
    JOIN some_join_table sjt 
        ON smt.index_value = sjt.secondary_index_value 
    WHERE smt.partition_index = partitionIndex
) umt ON (smt.partition_index = partitionIndex AND smt.index_value = umt.index_value)
WHEN MATCHED THEN
    UPDATE SET...
WHEN NOT MATCHED THEN
    INSERT VALUES...

在运行此语句时,锁定过程实际上是什么?使用select时涉及的每个表都会被锁定吗?sample_merge_table是完全锁定,还是只锁定正在访问的分区?UPDATE语句是否会以增量方式锁定,或者MERGE INTO本身是否已经拥有所需的锁?

EN

Stack Overflow用户

回答已采纳

发布于 2013-11-05 10:49:00

merge语句以行为单位工作,但会提前锁定所有内容,即当语句执行完成并确定受影响的行时。

阅读:

https://forums.oracle.com/message/4372012

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15936152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档