繁体   English   中英

Java中的MultiThreading导致表锁定

[英]MultiThreading in Java causing Table lock

我正在使用batchUpdate插入Oracle表。 五个不同的并行线程正在调用batchUpdate方法以插入到单个表中。 表是全局临时表类型。

程序执行没有完成,在建立数据库连接后卡住了。

在单个全局临时表上运行的多个线程是否会导致表锁定并保持程序的执行?

我可以使用以下查询查看锁定的表格 -

 select object_name, object_type from all_objects where object_id in (select object_id from v$locked_object);

是他们会。

如果2个不同的会话同时更新同一个表,则第二个会话将无法访问该表,直到第一个表完成更新(执行COMMIT)。 第一个会话实际上在该表上部署了一个'LOCK',直到它完成更新。

您可以在两个线程上完全同时更新完全相同的数据块吗?

这是ORACLE功能,可以保持数据的一致性。

请发送该查询的输出。 Oracle支持多种类型的锁。 其中一些可以共享(例如TM)。 您在v $ locked_object视图中看到某些内容的事实并不意味着某些会话被阻止。

很可能您的表仅针对DDL(ALTER TABLE)语句被锁定。 但不适用于DML。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM