成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

詳解Oracle數(shù)據(jù)庫主鍵SYS_GUID()

數(shù)據(jù)庫 其他數(shù)據(jù)庫
在oracle8i以后提供了一個生成不重復(fù)的數(shù)據(jù)的一個函數(shù)sys_guid()一共32位,生成的依據(jù)主要是時間和機器碼,具有世界唯一性,類似于java中的UUID(都是世界唯一的)。

在oracle8i以后提供了一個生成不重復(fù)的數(shù)據(jù)的一個函數(shù)sys_guid()一共32位,生成的依據(jù)主要是時間和機器碼,具有世界唯一性,類似于java中的UUID(都是世界唯一的)。

SYS_GUID

SYS_GUID同Oracle管理員所使用的傳統(tǒng)的序列(sequence)相比具有諸多優(yōu)勢。一個序列生成器只是簡單地創(chuàng)建從給定的起點開始的一系列整數(shù)值,而且它被用在選擇陳述式的時候自動地遞增該系列。

序列生成器所生成的數(shù)字只能保證在單個實例里是唯一的,這就不適合將它用作并行或者遠程環(huán)境里的主關(guān)鍵字,因為各自環(huán)境里的序列可能會生成相同的數(shù)字,從而導(dǎo)致沖突的發(fā)生。SYS_GUID會保證它創(chuàng)建的標識符在每個數(shù)據(jù)庫 里都是唯一的。

此外,序列必須是DML陳述式的一部分,因此它需要一個到數(shù)據(jù)庫的往返過程(否則它就不能保證其值是唯一的)。SYS_GUID源自不需要對數(shù)據(jù)庫進行訪問的時間戳和機器標識符,這就節(jié)省了查詢的消耗。

使用

SYS_GUID() 生成32位的唯一編碼。來生成唯一主鍵

例如:

  1. create table test 
  2. id raw(16) default sys_guid() primary key, 
  3. name varchar2(100) 
  4. ); 
  5. insert into test values(sys_guid(),'t1'); 

這樣就能生成唯一的主鍵id了,插入數(shù)據(jù)時不用插入id列。

SYS_GUID作為一個主關(guān)鍵字?

  1. create table use_seq_table(id integer ); 
  2. create sequence use_seq_sequence; 
  3. insert into use_seq_table values (use_seq_sequence_value.nextval ); 
  4.   
  5. create table use_guid_table(id raw (16)); 
  6. insert into use_guid_table(sys_guid());  

很多應(yīng)用程序都依靠序列生成器來創(chuàng)建數(shù)據(jù)行的主關(guān)鍵字,這些數(shù)據(jù)行沒有一個明顯的主值,這也就是說,在這樣的數(shù)據(jù)集里一條記錄的創(chuàng)建就會讓數(shù)據(jù)列發(fā)生改變。因此,管理員可能會對在表格中將SYS_GUID用作主關(guān)鍵字而不使用序列數(shù)感興趣。這在對象在不同機器的不同數(shù)據(jù)庫里生成以及需要在后來合并到一起的情況下很有用。

但是,SYS_GUID所生成的值是一個16位的原始值。序列所生成的整數(shù)不會使用16位(的值),除非它達到了10的30次方(每個字節(jié)有兩位),而且數(shù)字是相當獨特的:

  1. SQL> select dump (123456789012345678901234567890) from dual ; 

較短的值就意味著用于表格和索引的存儲空間更少,以及查詢訪問的時間更短。

使用SYS_GUID或者序列會在數(shù)據(jù)庫使用周期里的某些地方造成性能上的消耗,對于SYS_GUID而言,性能上的影響在查詢時間和 創(chuàng)建時間上(在表格里要創(chuàng)建更多的塊和索引以容納數(shù)據(jù))。對序列而言,性能上的影響在查詢期間,在這個時候,SGA序列的緩沖區(qū)被用光。在缺省情況下,一 個序列一次會緩沖20個值。如果數(shù)據(jù)庫沒有使用這些值就關(guān)閉了,它們就會被丟失。

SYS_GUID生成的值的另一個顯著的不足之處是,管理這些值會變得困難得多。你必須(手動)輸入它們或者通過腳本來填充它們,或者將它們作為Web參數(shù)來傳遞。

出于這些原因,將SYS_GUID作為一個主關(guān)鍵字不是一個很好主意,除非是在一個并行的環(huán)境里或者希望避免使用管理序列生成器的情況下。

總結(jié)

相比于JAVA的uuid,SYS_GUID優(yōu)點就是生成的字符串是唯一的,但其和UUID有同樣的弊端:生成的序列過長并且沒有規(guī)律不方便記憶。SYS_GUID的應(yīng)用場景是在于:當數(shù)據(jù)庫某字段設(shè)置為唯一,則可用次生成(比如主鍵)。

 

責任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2011-05-19 13:25:14

Oracle數(shù)據(jù)庫

2010-04-02 13:59:08

Oracle數(shù)據(jù)庫

2010-04-14 15:14:11

Oracle數(shù)據(jù)庫

2011-03-29 10:47:49

ORACLE數(shù)據(jù)庫

2011-07-19 10:11:23

Oracle數(shù)據(jù)庫NHibernate-

2011-05-17 15:02:15

ORACLE數(shù)據(jù)庫備份

2011-08-18 15:49:21

Oracle厲行計劃

2011-04-11 13:19:41

Oracle數(shù)據(jù)庫

2009-09-02 18:52:38

Oracle數(shù)據(jù)庫并行

2010-10-20 09:41:37

卸載Oracle

2010-04-09 16:51:24

Oracle數(shù)據(jù)庫

2009-02-09 12:52:32

文件加密Oracle數(shù)據(jù)庫

2011-08-15 23:14:34

Oraclerman環(huán)境配置

2011-08-12 13:33:31

Oracle數(shù)據(jù)庫自治事務(wù)

2010-04-02 17:11:45

Oracle數(shù)據(jù)庫

2009-05-14 10:16:36

Oracle優(yōu)化磁盤

2011-07-20 16:28:54

Oracle數(shù)據(jù)庫shared pool

2009-04-22 14:19:32

Oracle中文索引基礎(chǔ)

2011-08-24 10:45:23

Oracle數(shù)據(jù)庫進程從屬進程

2010-04-07 14:22:46

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品永久免费观看 | aaaaa毛片| 97久久久久久久久 | 日韩欧美字幕 | 国产精品www | 激情综合五月天 | 久久一区二区三区四区 | 日韩免费一区二区 | 九色在线观看 | 国产精品久久久久国产a级 欧美日韩国产免费 | 一区二区视频 | 亚洲视频中文字幕 | 亚洲精品久久久久久一区二区 | av电影手机在线看 | 久久久人成影片一区二区三区 | 亚洲精品成人免费 | 欧美日韩亚洲一区 | 九九久久精品 | 特级丰满少妇一级aaaa爱毛片 | 国产伦一区二区三区久久 | 亚洲伊人a | 日本久久www成人免 成人久久久久 | 国产99热精品 | 一本综合久久 | 日韩av在线免费 | 亚洲视频区 | 国内精品视频免费观看 | 国产免费拔擦拔擦8x高清 | 成人毛片在线视频 | 欧美综合一区二区 | 日批日韩在线观看 | 欧美一区二| 成人国产免费视频 | h片在线免费看 | 久久9热| 91久久精品日日躁夜夜躁国产 | 国产亚洲精品美女久久久久久久久久 | 亚洲精品在线视频 | 久久免费视频观看 | 久久久久国产精品人 | 最新国产精品精品视频 |