oracle序列上的多线程。线程是否可能从其他线程获得相同的序列值?

时间:2014-02-19 18:01:26

标签: multithreading oracle sequence

只是一个简单的案例。我需要在表A中插入4000万条记录。每个插入语句,我都会使用序列对象来存储。示例:

insert into table A ( objId,name,location ) values ( objId.nextval, ?,?);

而不是我正常循环来插入这个表A,我可以为这种插入命令制作多线程吗?可能是objId值将与其他线程共享?可以是线程将与其他线程获得相同的值吗?

故意我想让这个过程更快。

1 个答案:

答案 0 :(得分:4)

序列的要点是在多用户系统中生成唯一的数字。您可以(如果您的数据库没有首先崩溃)同时拥有一百万个会话,每个会话运行INSERT语句40次,并且您获得了4000万个不同的数字。

话虽这么说,如果您尝试加载4000万行数据,运行INSERT 4000万次并不是我的首选,特别是如果您不打算批量处理声明电话。使用单个INSERT执行4000万行的直接路径加载可能会更有效。