免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
從不sequential的sequence

從不sequential的sequence

[日期:2005-07-08]來源:CSDN  作者:[字體: ]

       遇到過好多問題關(guān)于如何在ORACLE 中創(chuàng)建類似SQLSERVERACCESS自增長字段。答案多是先建立一個Sequence,然后在Trigger中將SequenceNEXTVAL的取值賦予所需要的列??瓷先ミ€不錯。

       

        但是一切真的那么順利嗎?Sequence 真的可以做到提供一序列連續(xù)沒有遺漏的序列數(shù)值嗎?

         不妨作個實驗:

 

SQL> create sequence test_seq start with 1;

Sequence created.

SQL> create table test_tab ( x int) ;

Table created.

SQL> insert into test_tab values (test_seq.nextval) ;

1 row created.

SQL> insert into test_tab values (test_seq.nextval) ;

1 row created.

SQL> insert into test_tab values (test_seq.nextval) ;

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test_tab ;

X
----------
1
2

3

SQL> conn / as sysdba;
Connected.
SQL> alter system flush shared_pool ;

System altered.

SQL> conn user1/user1
Connected.
SQL> insert into test_tab values (test_seq.nextval) ;

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test_tab ;

X
----------
1
2

3
21

 

 

         從試驗中可以看出,在缺省情況下,我們建立的是帶有Cache選項的Sequence (缺省值是20), 它的作用是預(yù)先將一定數(shù)量的序列值存放在SGA中,便于快速訪問??墒撬母弊饔镁褪沁@部分?jǐn)?shù)值可能會被清除, 當(dāng)下一次獲取NEXTVAL時,就會不可避免地造成序列值丟失。

         總結(jié)一下,在以下情況下,序列值會丟失:

 

1.  數(shù)據(jù)庫關(guān)閉或重起 ,由于整個SGA會被清除,所以Cached的序列值同樣會被清除。

2.        類似于普通的Data Block ,當(dāng)SGA中需要放置新的數(shù)據(jù),Cached的序列值可能會按照SGA的數(shù)據(jù)存放規(guī)則被清除。

 

讀到這里,細(xì)心的讀者也許會問,如果在創(chuàng)建Sequence時,有意不選用Cache選項,問題不就解決了嗎?且慢,還有兩點(diǎn)需要注意:

 

1 訪問效率降低,沒有Cache功能的Sequence取值將無法直接訪問內(nèi)存

2 不論是Nocache還是Cache , 每次訪問NEXTVAL的過程都是不可逆的,在同一session中,在執(zhí)行一系列DMLSequence的操作后,用戶執(zhí)行Rollback,希望將操作回滾,但是Sequence此時就顯得異常頑固,用掉的NEXTVAL將無法被重現(xiàn)。當(dāng)下一次試圖讀取NEXTVAL時,Sequence的指針又移動到下一位了。

 

        看來Oracle真是一個海洋,每個細(xì)小的知識點(diǎn)都是那么饒有趣味,值得我們?nèi)ヅQ邪 ?/span>

 

 

備注:使用Cache功能對Sequence讀取效率的影響

Connected to:

Oracle8i Enterprise Edition Release 8.1.7.4.1 - Production
With the Partitioning option
JServer Release 8.1.7.4.1 - Production
 
SQL> set timing on
SQL> set autotrace traceonly statistics
SQL> SELECT * FROM ALL_OBJECTS;
14302 rows selected.
Elapsed: 00:00:13.05
Statistics
----------------------------------------------------------
          7  recursive calls
          4  db block gets
     146635  consistent gets
          0  physical reads
          0  redo size
    1633344  bytes sent via SQL*Net to client
     117520  bytes received via SQL*Net from client
        956  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      14302  rows processed
 
SQL> 
SQL> -- 測試帶有CACHE選項的Sequence:
SQL> 
SQL> CREATE SEQUENCE test_seq1 CACHE 1000;
 
Sequence created.
 
Elapsed: 00:00:00.00
SQL> SELECT x.*, test_seq1.NEXTVAL FROM ALL_OBJECTS x;
 
14303 rows selected.
 
Elapsed: 00:00:13.09
 
Statistics
----------------------------------------------------------
        202  recursive calls
         64  db block gets
     146636  consistent gets
          0  physical reads
      10468  redo size
    1752002  bytes sent via SQL*Net to client
     117543  bytes received via SQL*Net from client
        956  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      14303  rows processed
 
SQL> 
SQL> --測試不帶有CACHE選項的Sequence
SQL> 
SQL> DROP SEQUENCE test_seq1;
 
Sequence dropped.
 
Elapsed: 00:00:00.00
SQL> CREATE SEQUENCE test_seq1 NOCACHE;
 
Sequence created.
 
Elapsed: 00:00:00.00
SQL> SELECT x.*, test_seq1.NEXTVAL FROM ALL_OBJECTS x;
 
14303 rows selected.
 
Elapsed: 00:00:32.02        (執(zhí)行時間明顯長了)
 
Statistics
----------------------------------------------------------
     185946  recursive calls
      57216  db block gets
     160925  consistent gets
          0  physical reads
   10004008  redo size
    1752002  bytes sent via SQL*Net to client
     117543  bytes received via SQL*Net from client
        956  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      14303  rows processed

 

       

                                                                BLACK_SNAIL

                                                                歡迎交流,轉(zhuǎn)載注明

                                                             ligang1000@hotmail.com/ligang@fujitsu.sh.cn                                                                     

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
sequence的MAXVALUE、NOMAXVALUE和CYCLE、NOCYCLE參數(shù)
sequence
【等待事件】序列等待事件總結(jié)(SQ、SV、row cache lock、DFS lock handl...
SEQUENCE
Oracle seq_ 使用
Oracle提供的sequence對象的使用方法-Oracle-VB.NET專題網(wǎng)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服