教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> Oracle >> PL/SQL >> 学会将SYS_GUID和序列作为主关键字 RSS订阅
学会将SYS_GUID和序列作为主关键字
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   

  Oracle8i引入了SYS_GUID这个概念,它同Oracle管理员所使用的传统的序列(sequence)相比具有诸多优势。一个序列生成器只是简单地创建从给定的起点开始的一系列整数值,而且它被用在选择陈述式的时候自动地递增该系列。
  
  序列生成器所生成的数字只能保证在单个实例里是唯一的,这就不适合将它用作并行或者远程环境里的主关键字,因为各自环境里的序列可能会生成相同的数字,从而导致冲突的发生。SYS_GUID会保证它创建的标识符在每个数据库里都是唯一的。
  
  此外,序列必须是DML陈述式的一部分,因此它需要一个到数据库的往返过程(否则它就不能保证其值是唯一的)。SYS_GUID源自不需要对数据库进行访问的时间戳和机器标识符,这就节省了查询的消耗。
  
  create table use_seq_table(id integer);
  create sequence use_seq_sequence;
  insert into use_seq_table values (use_seq_sequence_value.nextval);
  
  REM - for some reason, the documentation uses raw(32)
  create table use_guid_table(id raw(16));
  insert into use_guid_table(sys_guid());
  
  很多应用程序都依靠序列生成器来创建数据行的主关键字,这些数据行没有一个明显的主值,这也就是说,在这样的数据集里一条记录的创建就会让数据列发生改变。因此,管理员可能会对在表格中将SYS_GUID用作主关键字而不使用序列数感兴趣。这在对象在不同机器的不同数据库里生成以及需要在后来合并到一起的情况下很有用。
  
  但是,SYS_GUID所生成的值是一个16位的原始值。序列所生成的整数不会使用16位(的值),除非它达到了10的30次方(每个字节有两位),而且数字是相当独特的:
  
  SQL> select dump(123456789012345678901234567890) from dual;
  
  DUMP(123456789012345678901234567890)
  --------------------------------------------------------------
  Typ=2 Len=16: 207,13,35,57,79,91,13,35,57,79,91,13,35,57,79,91
  
  较短的值就意味着用于表格和索引的存储空间更少,以及查询访问的时间更短。
  
  使用SYS_GUID或者序列会在数据库使用周期里的某些地方造成性能上的消耗;问题就是在哪里。对于SYS_GUID而言,性能上的影响在查询时间和创建时间上(在表格里要创建更多的块和索引以容纳数据)。对序列而言,性能上的影响在查询期间,在这个时候,SGA序列的缓冲区被用光。在缺省情况下,一个序列一次会缓冲20个值。如果数据库没有使用这些值就关闭了,它们就会被丢失。
  
  SYS_GUID生成的值的另一个显著的不足之处是,管理这些值会变得困难得多。你必须(手动)输入它们或者通过脚本来填充它们,或者将它们作为Web参数来传递。
  
  出于这些原因,将SYS_GUID作为一个主关键字不是一个很好主意,除非是在一个并行的环境里或者希望避免使用管理序列生成器的情况下。

来源:upschool.com.cn
作者:
关键字:学会将SYS,GUID,序列作为主关键字
发表日期:2007-1-6 0:29:27

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:获得SQL表述式的详细信息   下一篇:Oracle10g SQL*PLUS 的一些特性


2008-12-3 7:14:06
本文的相类似文章
  • The Oracle DBA's Guide to NT
  • 学会将SYS_GUID和序列作为主关键字
  • 利用GUID防止重复随机数的出现
  • 源代码推荐:vb的GUID生成算法
  • Forms of Address(The guide to studying in the USA)
  • Dining (The guide to studying in the USA)
  • American Holidays (The guide to studying in the USA)
  • Detailed Guide to BEC 2 Listening 1
  • Detailed Guide to BEC 2 Listening 2
  • Detailed Guide to BEC 2 Listening 3
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com