SQL数据库索引(5)-理解newid()_SQL SERVER数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

SQL数据库索引(5)-理解newid()

作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0

本篇关键词:理解索引数据库规律
黑客防线网安网讯:  在SQL Server 2005 中新增了一个函数:newsequentialid(),MSDN 中对这个函数的描述如下:   在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID。  NEWSEQUENTIALID() 不...

  在SQL Server 2005 中新增了一个函数:newsequentialid()MSDN 中对这个函数的描述如下:
  在指定计算机上创建大于先前通过该函数生成的任何 GUID 的 GUID

  NEWSEQUENTIALID() 不能在查询中引用

  NEWSEQUENTIALID() 只能与 uniqueidentifier 类型表列上的 DEFAULT 约束一起使用。

  这个函数的具体用法在下面这篇博客中已经有详细的描述了。

  使用NEWSEQUENTIALID解决GUID聚集索引问题http://database.ctocio.com.cn/tips/215/7791215.shtml

  简单来说newsequentialid 函数比起 newid 函数最大的好处是:如果你在一个 UNIQUEIDENTIFIER 字段上建立索引,使用 newid 产生的新的值是不固定的,所以新的值导致索引B+树的变化是随机的。而 newsequentialid 产生的新的值是有规律的,则索引B+树的变化是有规律的。有规律和无规律就会带来性能的改进。

  上面是一个粗略的描述,下面是比较详细点的解释:

  (我们这里解释的更详细一些,是为了让大家对索引的基础知识了解得更深入些。)

  B+ 树不考虑层级变化,增加数据的情况分以下几种情况:

  The insert algorithm for B+ Trees

Leaf Page Full
 Index Page FULL
 
Action
NO NO Place the record in sorted position in the appropriate leaf page
YES NO 1. Split the leaf page
2. Place Middle Key in the index page in sorted order.
3. Left leaf page contains records with keys below the middle key.
4. Right leaf page contains records with keys equal to or greater than the middle key.
 
YES YES 1. Split the leaf page.
2. Records with keys < middle key go to the left leaf page.
3. Records with keys >= middle key go to the right leaf page.
4. Split the index page.
5. Keys < middle key go to the left index page.
6. Keys > middle key go to the right index page.
7. The middle key goes to the next (higher level) index.

IF the next level index page is full, continue splitting the index pages.
 


  更多 B+ 树的算法请参看后面链接: http://www.sci.unich.it/~acciaro/bpiutrees.pdf

  对于数据库的索引来说,上面情况中,第三种情况发生的概率很低,更多的是 1,2 这两种情况。

  数据库中增加记录时,对索引的B+树的操作,其实就是对 左右叶子节点,上级节点的操作。

  而找到这几个节点后的操作,在实际上,都不是性能消耗最大的地方。性能消耗最大的地方在于搜索找到需要操作的叶子节点。

  对于 B+ 树来说, 几层的B+ 树,找到叶子节点就需要找几个数据页。那为何说 Guid 有规律时速度要比无规律时候快呢?

  原因很简单:

  1、缓存的命中率问题

  ( 你可以参看我之前写的这篇文章:理解缓存 http://database.ctocio.com.cn/tips/219/7791219.shtml )

  当每次产生的Guid是有规律时,找到需要操作的叶子节点的几个中间节点,可能已经在之前的访问中被缓存了。

  这样,系统不需要大量的读入缓存命中率很低的索引数据页,这样可以节省内存,同时提高搜索速度。

  2、连续和不连续的磁盘 I/O 操作对性能的影响

  我们都知道,现在很多业务逻辑的瓶颈是硬盘的速度。而硬盘速度提升的空间仍然

 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-10982-1.html
网站维护教程更新时间:2012-03-21 03:13:43  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer