欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Oracle sequence cache 博客分类: Oracle 优化  

程序员文章站 2024-03-22 12:55:52
...
create  table tab_test_seq(id number,col1 number(14) ,col2 varchar2(24)) ;
create sequence seq_test_insert;--seqence默认cache是20
alter sequence seq_test_insert  nocache;



SQL> select sequence_name,cache_SIZE  from dba_sequences where sequence_name  = 'SEQ_TEST_INSERT' ;

SEQUENCE_NAME                  CACHE_SIZE
------------------------------ ----------
SEQ_TEST_INSERT                    0

--查看执行时间
SQL> set timing on
SQL> begin
  2  for i in 1..50000 loop
  3  insert into tab_test_seq(id,col1,col2) values(seq_test_insert.nextval,99999,'qqq');
  4  end loop;
  5  commit;
  6  end;
  7  /

PL/SQL 过程已成功完成。

已用时间:  00: 00: 09.78

--修改cache
drop table tab_test_seq purge;
drop sequence seq_test_insert;
--重新建表
create  table tab_test_seq(id number,col1 number(14) ,col2 varchar2(24)) ;
create sequence seq_test_insert;--seqence默认cache是20
alter sequence seq_test_insert cache 1000;

--时间差别还是蛮大的,若在多会话插入及rac环境中,效率的影响更大
SQL> begin
  2  for i in 1..50000 loop
  3  insert into tab_test_seq(id,col1,col2) values(seq_test_insert.nextval,99999,'qqq');
  4  end loop;
  5  commit;
  6  end;
  7  /

PL/SQL 过程已成功完成。

已用时间:  00: 00: 02.29