当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:20:00  来源:本站整理

若何提高SQLSERVER的性能[MSSQL防范]

赞助商链接



  本文“若何提高SQLSERVER的性能[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
 

若何提高sql server的性能www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

第一篇:通过保护表的索引来提高数据的拜候速度www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

大大都SQL Server表需求索引来提高数据的拜候速度,假如没有索引,SQL Server要举行表格扫描读取表中的每一个记录才能找到索要的数据.索引可以分为簇索引和非簇索引,簇索引通太重排表中的数据来提高数据的拜候速度,而非簇索引则通过保护表中的数据指针来提高数据的索引.www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

   索引的体系构造:www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

为什么要不断的保护表的索引?首先,简单介绍一下索引的体系构造.SQL Server在硬盘顶用8KB页面在数据库文件内存放数据.缺省情形下这些页面及其包含的数据是无组织的.为了使混乱变成有序,就要生成索引.生成索引后,就有了索引页和数据页,数据页保存用户写入的数据信息.索引页存放用于检索列的数据值清单(关键字)和索引表中该值所在记录的地址指针.索引分为簇索引和非簇索引,簇索引实质上是将表中的数据排序,就仿佛是字典的索引目录.非簇索引不对数据排序,它只保存了数据的指针地址.向一个带簇索引的表中插入数据,当数据页到达100%时,由于页面没有空间插入新的的记录,这时就会发生分页,SQL Server 将大约一半的数据从满页中移到空页中,从而生成两个半的满页.这样就有大量的数据空间.簇索引是双向链表,在每一页的头部保存了前一页、后一页地址以及分页后数据移动的地址,由于新页大概在数据库文件中的任何地方,因此页面的链接不一定指向磁盘的下一个物理页,链接大概指向了另一个区域,这就形成了分块,从而减慢了系统的速度.关于带簇索引和非簇索引的表来说,非簇索引的关键字是指向簇索引的,而不是指向数据页的本身.www.c hinaitpower.comlSu2tX

为了降服数据分块带来的负面影响,需求重构表的索引,这是非常费时的,因此只能在需求时举行.可以通过DBCC SHOWCONTIG来肯定能否需求重构表的索引.下面举例来阐明DBCC SHOWCONTIGDBCC REDBINDEX的利用办法.以SQL Server自带的northwind数据作为例子www.c hinaitpower.comlSu2tX

  带开SQL ServerQuery analyzer输入号令:www.c hinaitpower.comlSu2tX

use northwindwww.c hinaitpower.comlSu2tX

declare @table_id intwww.c hinaitpower.comlSu2tX

set @table_id=object_id('orders')www.c hinaitpower.comlSu2tX

dbcc showcontig(@table_id)www.c hinaitpower.comlSu2tX

这个号令显示northwind数据库中的orders表的分块情形,后果以下:www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

DBCC SHOWCONTIG scanning 'Orders' table...www.c hinaitpower.comlSu2tX

Table: 'Orders' (21575115); index ID: 1, database ID: 6www.c hinaitpower.comlSu2tX

TABLE level scan performed.www.c hinaitpower.comlSu2tX

- Pages Scanned................................: 20www.c hinaitpower.comlSu2tX

- Extents Scanned..............................: 5www.c hinaitpower.comlSu2tX

- Extent Switches..............................: 4www.c hinaitpower.comlSu2tX

- Avg. Pages per Extent........................: 4.0www.c hinaitpower.comlSu2tX

- Scan Density [Best Count:Actual Count].......: 60.00% [3:5]www.c hinaitpower.comlSu2tX

- Logical Scan Fragmentation ..................: 0.00%www.c hinaitpower.comlSu2tX

- Extent Scan Fragmentation ...................: 40.00%www.c hinaitpower.comlSu2tX

- Avg. Bytes Free per Page.....................: 146.5www.c hinaitpower.comlSu2tX

- Avg. Page Density (full).....................: 98.19%www.c hinaitpower.comlSu2tX

DBCC execution completed. If DBCC printed error messages, contact your system administrator.www.c hinaitpower.comlSu2tX

通过解析这些后果可以知道该表的索引能否需求重构.表1.1描写了每一行的意义www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

 信息                          描写www.c hinaitpower.comlSu2tX

Pages Scanned                    表或索引中的长页数www.c hinaitpower.comlSu2tX

Extents Scanned                               表或索引中的长区页数www.c hinaitpower.comlSu2tX

Extent Switches                                DBCC遍历页时从一个区域到另www.c hinaitpower.comlSu2tX

一个区域的次数www.c hinaitpower.comlSu2tX

Avg. Pages per Extent                       相关区域中的页数www.c hinaitpower.comlSu2tX

Scan Density                                    Best Count是持续链接时的抱负区www.c hinaitpower.comlSu2tX

[Best Count:Actual Count]                域改变数,Actual Count是实际区www.c hinaitpower.comlSu2tX

域改变数,Scan Density100%www.c hinaitpower.comlSu2tX

表示没有分块.www.c hinaitpower.comlSu2tX

Logical Scan Fragmentation            扫描索引页中失序页的百分比www.c hinaitpower.comlSu2tX

Extent Scan Fragmentation               不实际相邻和包含链路中全部链www.c hinaitpower.comlSu2tX

接页的区域数www.c hinaitpower.comlSu2tX

Avg. Bytes Free per Page                  扫描页面中平均安闲字节数www.c hinaitpower.comlSu2tX

Avg. Page Density (full)                     平均页密度,表示页有多满www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

从上面号令的履行后果可以看的出来,Best count3 Actual Count5这表明orders表有分块需求重构表索引.下面通过DBCC DBREINDEX来重构表的簇索引.www.c hinaitpower.comlSu2tX

一样在Query Analyzer中输入号令:www.c hinaitpower.comlSu2tX

use northwindwww.c hinaitpower.comlSu2tX

dbcc dbreindex('northwind.dbo.orders',pk_orders,90)www.c hinaitpower.comlSu2tX

履行后果:www.c hinaitpower.comlSu2tX

DBCC execution completed. If DBCC printed error messages, contact your system administrator.www.c hinaitpower.comlSu2tX

Dbcc dbreindex参数阐明:第一个参数为要重构的表明.第二个参数为需求重构的索引表识,‘’表示全部的索引.第三个参数为页的填充因子,填充因子越大,页越满.www.c hinaitpower.comlSu2tX

然后再用DBCC SHOWCONTIG查垂青构簇索引后的后果:www.c hinaitpower.comlSu2tX

use northwindwww.c hinaitpower.comlSu2tX

declare @table_id intwww.c hinaitpower.comlSu2tX

set @table_id=object_id('orders')www.c hinaitpower.comlSu2tX

dbcc showcontig(@table_id)www.c hinaitpower.comlSu2tX

返回后果以下:www.c hinaitpower.comlSu2tX

DBCC SHOWCONTIG scanning 'Orders' table...www.c hinaitpower.comlSu2tX

Table: 'Orders' (21575115); index ID: 1, database ID: 6www.c hinaitpower.comlSu2tX

TABLE level scan performed.www.c hinaitpower.comlSu2tX

- Pages Scanned................................: 22www.c hinaitpower.comlSu2tX

- Extents Scanned..............................: 3www.c hinaitpower.comlSu2tX

- Extent Switches..............................: 2www.c hinaitpower.comlSu2tX

- Avg. Pages per Extent........................: 7.3www.c hinaitpower.comlSu2tX

- Scan Density [Best Count:Actual Count].......: 100.00% [3:3]www.c hinaitpower.comlSu2tX

- Logical Scan Fragmentation ..................: 0.00%www.c hinaitpower.comlSu2tX

- Extent Scan Fragmentation ...................: 33.33%www.c hinaitpower.comlSu2tX

- Avg. Bytes Free per Page.....................: 869.2www.c hinaitpower.comlSu2tX

- Avg. Page Density (full).....................: 89.26%www.c hinaitpower.comlSu2tX

DBCC execution completed. If DBCC printed error messages, contact your system administrator.www.c hinaitpower.comlSu2tX

通过后果我们可以看到Scan Denity100%表没有分块不需求重构表索引了.假如重构表的簇索引Scan Denity还小于100%的话可以重构表的全部索引.号令以下:www.c hinaitpower.comlSu2tX

--use northwindwww.c hinaitpower.comlSu2tX

--dbcc dbreindex('northwind.dbo.orders',’’,90)www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

利用功课按时重构索引:www.c hinaitpower.comlSu2tX

 www.c hinaitpower.comlSu2tX

假如你的数据库拜候非常频繁的话,非常简单呈现数据分块的现象,因此你可以操纵功课来帮你在系统相对闲暇的时刻重构你的索引.www.c hinaitpower.comlSu2tX

  以上是“若何提高SQLSERVER的性能[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • Visual C++调试工具若何提高调试器的查错本领
  • 若何提高U盘拷贝速度
  • 若何提高SQL Server 的安全性?
  • 若何提高SQLSERVER的性能
  • 分享:若何提高网站出名度?
  • 若何提高PUE值 数据中央能耗详解(图)
  • 反情势可以若何提高编程
  • 详述若何提高MySQL中数据装载效率
  • <b>菜鸟讲堂:详述若何提高MySQL中数据装载效率</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .