一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

從不sequential的sequence

 qzg589 2005-09-09

從不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中,便于快速訪問??墒撬母弊饔镁褪沁@部分數(shù)值可能會被清除, 當下一次獲取NEXTVAL時,就會不可避免地造成序列值丟失。

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

 

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

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

 

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

 

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

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

 

        看來Oracle真是一個海洋,每個細小的知識點都是那么饒有趣味,值得我們?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@/ligang@fujitsu.sh.cn                                                                     

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本加勒比系列在线播放| 性欧美唯美尤物另类视频| 亚洲国产成人精品福利| 中文字幕中文字幕一区二区| 国产免费黄片一区二区| 国产自拍欧美日韩在线观看| 精品人妻一区二区四区| 欧美人妻盗摄日韩偷拍| 精品人妻一区二区三区四在线| 亚洲欧洲日韩综合二区| 国产一区在线免费国产一区| 欧美日韩国产二三四区| 国产av一区二区三区四区五区| 高清不卡视频在线观看| 午夜直播免费福利平台| 五月婷婷综合激情啪啪| 欧美日韩人妻中文一区二区| 最新国产欧美精品91| 在线观看国产午夜福利| 亚洲国产综合久久天堂| 日韩黄片大全免费在线看| 开心激情网 激情五月天| 国产一区欧美午夜福利| 正在播放玩弄漂亮少妇高潮| 国产又爽又猛又粗又色对黄| 亚洲综合激情另类专区老铁性| 青青久久亚洲婷婷中文网| 午夜久久精品福利视频| 二区久久久国产av色| 日本深夜福利视频在线| 亚洲熟女一区二区三四区| 91插插插外国一区二区| 亚洲国产精品久久综合网| 国产在线日韩精品欧美| 在线播放欧美精品一区| 欧美成人国产精品高清| 国产精品蜜桃久久一区二区| 中文字幕五月婷婷免费| 色哟哟哟在线观看视频| 国产老熟女超碰一区二区三区| 午夜久久精品福利视频|