SAPR3性能优化指南_第1页
SAPR3性能优化指南_第2页
SAPR3性能优化指南_第3页
SAPR3性能优化指南_第4页
SAPR3性能优化指南_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MS SQL Server 7.0 的 SAP R/3 性能优化指南 1998 年 11 月发行 读者 本文档所提供的的信息可以帮帮助 SAPP R/3 数据库管理理员理解 MMicrossoft SQL SServerr 7.00 的各个方方面。这些方方面可以经过过优化,从而而在与 SAAP R/33 环境相关关的特有数据据库工作负荷荷条件下提供供最佳性能。 虽然本文档是为为 SAP R/3 站站点量身定制制的,但是一一定要注意本本文档中描述述的 SQLL Servver 功能能和优化技巧巧不仅仅适用用于 SAPP R/3。大大型到超大型型数据库 (VLDB) 需要支持持大量用户连连接和大的

2、工工作负荷,工工作于这一环环境中的数据据库管理员将将从本文的信信息中获益匪匪浅。 引言 本篇有关性能优优化的文档将将讨论 SAAP R/33 环境中的的 SQL Serveer 7.00 最佳配置置。本指南分分为四个逻辑辑部分。第一一部分,讨论论与 Miccrosofft Winndows NT SServerr 相关的配配置选项。第第二部分,描描述 SAPP R/3 环境中 SSQL Seerver 的重要配置置选项。前面面这两个部分分直截了当,其其中还包含了了在 SQLL Servver 的初初始配置过程程中几分钟就就可以完成的的一些步骤。第第三部分,讨讨论 SQLL Servver 的索

3、索引设计,因因为它与 SSAP R/3 相关。索索引分析往往往是一个极其其棘手的过程程,为使数据据库性能最佳佳需要持续不不断地执行索索引分析。 Microosoft TechNNet 中的的“Micrrosoftt SQL Serveer 7.00 性能优化化指南”应该该作为本文第第三部分的补补充读物。该该指南综合讨讨论硬件 II/O 性能能、索引设计计以及 SQQL Serrver 性性能优化工具具。第四部分分,讨论 RR/3 数据据库中的 SSQL Seerver 文件和文件件组的最佳应应用。 Windowss NT 配配置 Windowss NT 页页面文件的大大小应该至少少比服务器上上

4、安装的 RRAM 大三三倍,而且要要至少有 110 亿字节节 (1 GGB)。 设置页面文件大大小 在开始菜单上,指指向设置,然后单单击控制面板板。 双击系统,然后后双击性能选项卡。 单击更改,然后后在起始大小小 (MB) 框中,输输入页面文件件的大小(按按兆字节 (MB) 计计)。 单击确定。 通常,VMM(虚虚拟内存管理理器)已经根根据 SQLL Servver 安装装的默认设置置进行了适当当的配置。 检查和/或配置置 VMM 设置 在开始菜单上,指指向设置,然后单单击控制面板板。 双击网络,然后后单击服务选项卡。 双击服务器,选选择最大化网网络应用程序序吞吐量,然然后单击确定定。 配置最

5、小影响的的屏幕保护程程序和墙纸 在开始菜单上,指指向设置,然后单单击控制面板板。 双击显示,然后后单击背景选项卡。 选定图案为(无无),并选定定墙纸为(无无)。 单击应用,然后后单击屏幕保保护程序选项项卡。 在屏幕保护程序序下,选定 BBlank Screeen,然后选选定密码保护护。 单击应用。 一些多处理器服服务器可以将将联网 I/O 请求动动态分发到最最不繁忙的处处理器。该硬硬件功能有助助于防止在服服务于许多联联网请求的系系统中出现处处理器瓶颈和和不良网络性性能。该功能能通常称为对对称中断分发发,使用该功功能可以改进进可扩展性能能并防止出现现在其它处理理器还有剩余余容量时某一一个处理器却

6、却成为瓶颈的的情况。它在在 Penttium 处处理器系列的的 Winddows NNT 4.00 HAL(硬硬件抽象层)中中可以找到。WWindowws 20000 也支持该该功能。 不同处理器操作作平台使用不不同方法分发发中断。网卡卡的中断分发发是由每个处处理器操作平平台的 HAAL 来控制制的。HALL 实施的中中断方案取决决于处理器的的性能。某些些处理器包含含了中断控制制硬件,如高高级可编程中中断控制器 (APICC)。APIIC 允许处处理器将中断断路由到计算算机上的其它它处理器。有有关特定处理理器操作平台台所使用的分分发方法的详详细信息,请请咨询操作平平台供应商。 在默认情况下,W

7、Windowws NT 4.0 不不使用对称中中断分发,而而是将与网卡卡 (NICC) 相关的的延迟进程调调用 (DPPC) 活动动分配给系统统中编号最大大的处理器。在在安装有多个个 NIC 且 NICC 活动的系系统中,每个个额外的 NNIC 的活活动都指派到到下一个编号号最大的处理理器。 如果处理器频繁繁以百分之百百的容量(性性能监视器所所显示的 PProcesssor: % Proocessoor Timme = 1100%)操操作而且一半半以上时间用用于为 DPPC 提供服服务上(即如如果 Proocessoor: % DPC TTime 50%),那那么可以通过过调整 Prroces

8、ssorAfffinityyMask 来提高性能能。 警告 注册表编编辑器使用不不当会导致严严重的问题,有有可能需要重重新安装操作作系统。使用用注册表编辑辑器要特别小小心。Miccrosofft 不保证证能够解决因因注册表编辑辑器使用不当当而导致的问问题。建议您您在执行修改改前备份注册册表内容,这这样在注册表表修改出现问问题时就能够够还原内容。有有关备份和还还原注册表信信息的说明可可以在注册表表编辑器的联联机帮助中找找到。 在能够进行对称称中断分发的的多处理器服服务器上,将将 Winddows NNT 注册表表中 ProocessoorAffiinityMMask 数数值项的值设设置为零。这这

9、样就会将网网络 I/OO 请求动态态分发到最有有能力处理请请求的处理器器中。ProocessoorAffiinityMMask 位位于:HKEEY_LOCCAL_MAACHINEE Sysstem CurreentConntrolSSet SServicces NNDIS Parammeterss。 启动注册表编辑辑器以设置 ProceessorAAffiniityMassk 在开始菜单上,单单击运行。 键入 regeedt32。 在注册表编辑器器中找到适当当关键字 在窗口菜单中选选择 HKEEY_LOCCAL_MAACHINEE。 在注册表编辑器器左边窗格中中,双击 SSYSTEMM。 双击

10、 CurrrentCoontrollSet,双双击 Serrvicess,双击 NNDIS ,然然后双击 PParameeters。 将 ProceessorAAffiniityMassk 设置为为零 在注册表编辑器器右边窗格中中,双击 PProcesssorAfffinittyMaskk。 键入 0(零),然然后单击确定定。 在注册表菜单上上,单击退出出。 SQL Serrver 配配置 SQL Serrver 内内存的推荐设设置取决于 R/3 实实例对数据库库服务器的使使用情况。如如果 SQLL Servver 是作作为专用数据据库服务器而而运行,建议议 SQL Serveer 按照默默认

11、值动态调调整它所需要要的内存。 R/3 实例最小值最大值专用数据库服务务器默认值默认值更新实例已安装 RAMM 的 400%已安装 RAMM 的 655%中心实例已安装 RAMM 的 455%已安装 RAMM 的 455%在有 2 GBB RAM 的中心实例例上设置内存存的例子 (Enterrprisee Manaager) 在右边窗格中,双双击 SQLL Servver Grroup 图图标。 双击 R/3 数据库服务务器的 SQQL Serrver 图图标。 单击 Memoory 选项项卡,然后单单击 Usee a fiixed mmemoryy sizee (MB)。 将 Use aa

12、fixeed memmory ssize (MB) 下下的滑块移动动到 9000。 选定 Reseerve pphysiccal meemory for SSQL Seerver ,单击 Appply ,然然后单击 OOK。 完成 SQL Serveer 的内存存配置之后,建建议使用 sset woorkingg set size 选项保留与与 SQL Serveer 内存设设置相等的物物理内存空间间。设置该选选项意味着 Windoows NTT 不转换出出 SQL Serveer 页。 配置设置工作集集大小选项的的例子 (EEnterpprise Managger) 在右边窗格中,双双击 S

13、QLL Servver Grroup 图图标。 双击 R/3 数据库服务务器的 SQQL Serrver 图图标。 单击 Memoory 选项项卡,然后选选定 sellect RReservve phyysicall memoory foor SQLL Servver。 单击 Applly,然后单单击 OK。 SAP 测试显显示出,在大大多数 R/3 数据库库服务器操作作环境下网络络数据包大小小为 8,1192 字节节时性能最佳佳。该选项需需要使用 SSQL Seerver Queryy Anallyzer 来设置。 设置网络数据包包大小 (QQuery Analyyzer) 键入 execc

14、 sp_cconfiggure netwoork paacket size, 81992。 键入 recoonfiguure wiith ovverridde。 按 CTRL + E 执行以以上命令。 在专用服务器上上,建议使用用 SQL Serveer priiorityy boosst 选项。 设置优先级提升升选项 (EEnterpprise Managger) 在右边窗格中,双双击 SQLL Servver Grroup 图图标。 双击 R/3 数据库服务务器的 SQQL Serrver 图图标。 单击 Proccessorr 选项卡,然然后在 Prrocesssor Coontroll

15、 框中,选选定 Booost SQQL Serrver pprioriity onn Winddows NNT。 建议将 SQLL Servver inndex ccreatee memoory 选项项配置为 116 MB。该该选项需要使使用 SQLL Servver 查询询分析器来设设置。 设置索引创建内内存选项 (Queryy Anallyzer) 键入 execc sp_cconfiggure indexx creaate meemory, 160000。 键入 recoonfiguure wiith ovverridde。 按 CTRL + E 执执行以上命令令。 禁用 VBHDDR、

16、VBMMOD 和 VBDATTA 表的页页面锁定 (Queryy Anallyzer) 在查询窗口键入入以下命令: exec spp_indeexoptiion VVBHDR,alllowpaggelockks,ffalse execc sp_iindexooptionn VBMMOD,allowwpagellocks,fallse eexec ssp_inddexopttion VBDATTA,aallowppageloocks,falsse 按 CTRL + E 执执行以上命令令。 如果数据库服务务器上的所有有处理器的利利用率都很高高(性能监视视器表明在多多处理器服务务器上所有处处理器的处

17、理理器利用率全全部大于 995%),那那么就有必要要打开 SQQL Serrver llightwweightt poolling。在在所有处理器器都非常接近近完全利用时时,lighhtweigght pooolingg 可以帮助助恢复大约 5% 到 7% 的 CPU。 打开 SQL Serveer ligghtweiight ppoolinng (Ennterprrise MManageer) 在右边窗格中,双双击 SQLL Servver Grroup 图图标。 双击 R/3 数据库服务务器的 SQQL Serrver 图图标。 单击 Proccessorr 选项卡,选选定 sellect

18、 UUse Wiindowss NT FFiberss,然后单击击 Applly。 当提示重新启动动 SQL Serveer 时,单单击 Yess,然后单击击 Ok。 SQL Serrver aaffiniity maask 配置置选项提供了了不能执行 SQL SServerr 线程的特特定处理器的的规范。最好好运用 SQQL Serrver 关关系掩码的默默认设置,即即零。关系掩掩码的设置为为零表明允许许在所有处理理器上执行 SQL SServerr 线程。几几乎在所有情情况下,该设设置都会使性性能最佳,因因为它避免了了在其它处理理器上有剩余余容量的情况况下而在某一一台处理器上上的 SQLL

19、 Servver 连接接非常繁忙的的情况。Miicrosooft 的 IT 机构构和参与 SSQL Seerver 7.0 EEarly Adoptter 计划划的 SAPP R/3 用户已运用用了关系掩码码的默认设置置,结果性能能良好。 索引设计与维护护 “Microssoft SSQL Seerver 7.0 性性能优化指南南”提供了有有关 SQLL Servver 索引引和性能优化化的重要信息息。此文档可可在“查找详详细信息”处处找到。 大型的 SAPP R/3 安装会有一一些包含非常常多行的 SSQL Seerver 表。有了大大的表,索引引对数据库 I/O 性性能影响极大大。 在单个

20、数据库行行或少量数据据库行上搜索索并执行的操操作,应该有有一个基于提提供最高级别别选择性的一一列或几列所所定义的非聚聚集或聚集索索引。这样,SSQL Seerver 查询处理器器和存储引擎擎就能够将检检索行所需的的 I/O 控制到最小小化。例如,如如果必须定期期从非常大的的 Ordeers 表中中根据 orrderidd 来检索单单个定单记录录,那么基于于 ordeerid 列列定义索引可可以加快查询询的速度就是是有意义的。 在多数数据库行行上搜索和执执行的操作应应该基于定义义范围扫描的的列定义聚集集索引。从非非常大的七月月份 Ordders 表表中检索所有有定单的查询询就是范围扫扫描的一个例

21、例子。在这种种情况下,OOrderss 表的日期期列就是聚集集索引的最佳佳列。 即将发行的 SSAP R/3 4.55B 版本将将带有一个影影响 SQLL Servver 聚集集索引选择灵灵活性的重要要功能。在 4.5B 版中,R/3 数据字字典对除主键键列以外的列列聚集索引有有被动支持。被被动支持的意意思是:在数数据库表已改改变以致于聚聚集索引从主主键移至了另另一列或列集集的情况下,SSAP R/3 数据字字典会识别并并记录 SQQL Serrver 聚聚集索引的位位置。创建聚聚集索引需要要使用与 RR/3 工具具对应的 SSQL Seerver 工具。但是是,聚集索引引的位置在创创建之后不

22、会会在数据库转转换和 R/3 版本升升级过程中丢丢失。 4.5B 以后后的 SAPP R/3 版本中有可可能包含 SSQL Seerver 聚集索引的的积极支持。积积极支持的意意思是:除前前面所讲到的的 R/3 Data Dictiionaryy供的支持外外,R/3 工具还将支支持在 SQQL Serrver 表表上的列(除除主键列以外外)的聚集索索引创建。 聚集索引支持中中的这些更改改与希望改进进其 R/33 报告查询询性能的 RR/3 数据据库管理员的的想法有很大大出入。运行行 SAP R/3 的的大型公司的的月末和季度度报告可能会会使用数据库库服务器上的的范围扫描。通通常情况下会会是这样

23、一种种情况:在大大表上所执行行的范围扫描描将不以与定定义表的主键键相同的列为为基础。目前前,SAP R/3 SSQL Seerver 数据库实施施将所有表上上的主键配置置为聚集主键键。某些情况况对测试非主主键组成部分分且常常为了了报告目的而而用于大型表表的列的聚集集索引的使用用非常有利。AALTER TABLEE 命令用于于将聚集主键键更改为非聚聚集主键。 以下索引分析示示例讨论了这这样一种情况况,即将聚集集主键更改为为非聚集主键键以便聚集索索引可以基于于另一列进行行定义并预排排将聚集主键键更改为非聚聚集主键所涉涉及的步骤,这这一点是有意意义的。 有关聚集和非聚聚集索引选择择的详细信息息,应参

24、阅“MMicrossoft SSQL Seerver 7.0 性性能优化指南南”。 SAP R/33 在 STT04 事务务处理中提供供 MSSTTATS 工工具,可以帮帮助 R/33 数据库管管理员跟踪数数据库服务器器上所执行的的 SQL Serveer 存储过过程的资源占占用。所有 R/3 与与数据库服务务器的正常交交互作用都使使用存储过程程执行。 MMSSTATTS 提供有有助于根据资资源使用区分分存储过程的的信息。MSSSTATSS 返回的信信息的例子包包括:存储过过程的调用次次数、用于调调用存储过程程的平均和最最长时间、存存储过程调用用所返回的行行平均数和总总行数、存储储过程是否使使

25、用了游标、存存储过程用于于提取的时间间与空闲时间间等等。 MSSTATSS 提供了用用于确定在 R/3 数数据库服务器器上所运行的的费用最高的的存储过程的的重要工具。性性能分析应集集中于这些费费用最高的查查询。 使用以下 SQQL Serrver 表表示例可以模模仿与许多 SAP RR/3 表非非常类似的数数据模式。两两个示例查询询将使用该此此测试表进行行分析。其目目的是说明如如何在 R/3 数据库库服务器环境境中很好地利利用 SQLL Servver 索引引。 示例数据以下脚本创建名名为 sapptest11 的表并在在其中加入 100,0000 个记记录。第一个个名为 cool1 的列列没

26、有选择性性。每一行的的 col11 数值是一一样的 (000)。这是为了了模拟 SAAP R/33 中非常常常见的 MAANDT 列列,通常它不不太具有选择择性。第二个个名为 cool2 的列列设计为带有有一些选择性性,因为每隔隔 100 行就插入了了一个 aa 数值。 SQL SServerr moduulo (%) 操操作符用于检检测每第 1100 行的的插入。最后后一个名为 col3 的的列的选择性性极高。每一一行都有唯一一的 coll3 数值。 创建示例数据 (Querry Anaalyzerr) 在查询窗口键入入以下命令: create tablee sapttest1 ( coll

27、1 chaar(4) not nnull ddefaullt 0000, ccol2 cchar(44) nott nulll defaault zzzz, coll3 intt not null, filller chhar(3000) deefaultt abcc ) ddeclarre coounterr int set nnocounnt on set countter = 1 whiile (countter Extennded HHelp。单单击 Inddexes,然然后按照联机机指示执行。 执行索引更改 (Querry Anaalyzerr) 在查询窗口键入入以下命令: alte

28、r ttable sapteest1 ddrop cconstrraint sapt_c1 allter ttable sapteest1 aadd coonstraaint ssapt_cc1 PRIIMARY KEY NNONCLUUSTEREED (cool1,cool2,cool3) ccreatee clussteredd indeex ckeey1 onn sapttest1(col2) creaate inndex nnkey1 on saaptestt1(coll3) 按 CTRL + E 执执行命令。 第二组索引的结结果改进索引的单行行取数据:sselectt * frrom

29、 saaptestt1 wheere cool3 = 5000基于文本的 SShowPllan 输出出: |-Bookkmark Lookuup(BOOOKMARKK:(Bmmk10000), OOBJECTT:(puubs.dbo.sapttest1) WITTH PREEFETCHH) |Indexx Seekk(OBJEECT:(pubs.dboo.saaptestt1.nnkey1), SEEEK:(sapteest1.col33=50000) ORRDEREDD) 等量图形显示计计划输出。 统计 I/O 的查询结果果集和数据库库 I/O (Querry Anaalyzerr): co

30、l1 cool2 cool3 fiiller 000 aa 50000 abc (1 roow(s) affeccted) Tablee sapptest11.Scaan couunt 1, logiical rreads 5, phhysicaal reaads 0, readd-aheaad reaads 0. Showplaan 现在表表明 SQLL Servver 正在在对索引 nnkey1 使用索引搜搜索而不是索索引扫描。索索引搜索是指指:SQL Serveer 能够快快速浏览 nnkey1 B 树结构构(而不是象象前面例子中中的扫描索引引的叶级),并并使用书签查查找来找到与与键值

31、50000 关联联的数据行。这这一从索引扫扫描到索引搜搜索的改变对对 I/O 性能有极大大的影响。要要执行查询,仅仅需要 SQQL Serrver 数数据高速缓存存中的 5 个 I/OO,而前一个个例子中,需需要 2400 个。 改进索引的范围围扫描:seelect * froom sapptest11 wherre coll2 = a基于文本的 SShowPllan 输出出: |-Clussteredd Indeex Seeek(OBJJECT:(pubss.dbbo.ssaptesst1.ckey11), SSEEK:(sapttest1.coll2=aa) ORRDEREDD) 等量图形

32、显示计计划输出。 统计 I/O 的查询结果果集和数据库库 I/O (Querry Anaalyzerr): col1 cool2 cool3 fiiller 000 aa 100 abc 0000 a 200 aabc 0000 a 3300 abbc . . . 000 a 998800 abbc 0000 a 999900 aabc 0000 a 11000000 abc (10000 row(s) afffecteed) Taable sapteest1.Scan countt 1, llogicaal reaads 488, phyysicall readds 0, read-ahea

33、dd readds 0. Showplaan 再次表表明 SQLL Servver 正在在对索引 cckey1 使用索引搜搜索而不是索索引扫描。在在聚集索引搜搜索情况下,不不需要进行书书签查找,因因为聚集索引引 B 树的的叶级已包含含表数据。索索引扫描到索索引搜索的改改变再次对 I/O 性性能产生重大大而又积极影影响。要提取取 1,0000 行,仅仅需要对 SSQL Seerver 高速缓冲存存储器的 448 次读取取,而在前一一个例子中则则需要 4,500 个个 I/O。II/O 的数数量已大大减减少,因此,完完成该查询不不再需要物理理磁盘 I/O,因为所所需要的页在在 SQL Servee

34、r 数据高高速缓存中已已经有了。物物理读取和预预读读取的数数字都是零,这这就说明了这这一点。切记记:预读读取取是每个读取取为 64 KB 的物物理磁盘读取取,物理读取取是每个读取取为 8 KKB 的物理理磁盘读取。 索引分析的观察察与结论从前面的例子中中可以清楚看看出:索引设设计对 SQQL Serrver 查查询中的 II/O 性能能起着举足轻轻重的作用。范范围扫描的例例子特别用来来说明:在 R/3 环环境中,还可可能有适合于于除主键列以以外的列的聚聚集索引的情情况。特别是是对于要在其其上执行报告告的大型表来来说,这是很很有可能的。例例如,如果大大型表根据日日期列进行报报告,但是日日期列未包

35、含含在聚集主键键中,那么对对于聚集索引引测试日期列列的使用就非非常有用。 在 SQL SServerr 7.0 中,聚集索索引中所包含含的列和字节节越多,该特特定表的非聚聚集索引越大大。这是因为为该表的聚集集索引和非聚聚集索引都使使用构成聚集集索引的列。非非聚集索引包包含群集键并并使用群集键键定位 roowdataa。如果表上上没有聚集索索引,则此情情况不适用。相相反,在这种种情况下表是是作为堆集来来管理的。有有关详细信息息,请参见 SQL SServerr 联机图书书。 既然非聚集索引引在非聚集 B 树结构构中包含群集集键,要注意意两种影响。第第一,一定要要保持较小的的聚集索引规规模,因为它

36、它不仅影响聚聚集索引的大大小和性能,而而且还影响该该表中的所有有非聚集索引引的大小和性性能。第二,一一定要记住非非聚集索引包包含群集键,因因为在非聚集集索引包含满满足查询(群群集键除外)所所需的所有列列的情况下,查查询处理器可可以使用键值值列帮助涵盖盖查询。 涉及群集键的涵涵盖查询示例例以下是一个简单单的例子,它它说明了在群群集键仅包含含非聚集索涵涵盖给定查询询所需的其它它信息的情况况下,查询处处理器将非聚聚集索引用作作涵盖索引,并并无须使用书书签查找从表表中提取数据据。有关涵盖盖查询与索引引设计的详细细信息,请参参见“Miccrosofft SQLL Servver 7.0 性能优优化指南”

37、。 建立以下表 (Queryy Anallyzer) 在查询窗口键入入以下命令: create tablee sapttest2 (col11 int, col22 charr(4) ddefaullt a, filller cchar(3300) ddefaullt zzzzz) declaare ccounteer intt set counnter = 1 whhile (counnter = 10000) beegin iinsertt sapttest2 (col11) vallues (counnter) set countter = counnter + 1 ennd insse

38、rt ssaptesst2 vaalues (10011,sapp,R/3) ccreatee clussteredd indeex sapp_CK1 on saaptestt2(coll1) crreate noncllusterred inndex ssap_NCCK1 onn sapttest2(col2) 按 CTRL + E 执行命令。 显示并比较以下下两种查询计计划 (Quuery AAnalyzzer) 在查询窗口键入入以下命令: select * froom sapptest22 wherre coll2 = sap selecct coll1,coll2 froom sapp

39、test22 wherre coll2 = sap 分别选择每个查查询,然后按按 CTRLL + L 显示图形显显示计划。 使用第二个查询询不需要书签签查找,因为为非聚集索引引暗含群集键键,因此涵盖盖了查询。 当解决 R/33 程序长期期存在的问题题时,要牢记记一种潜在的的操作方法,即即使用 spp_recoompilee 标记存储储过程以便快快速重编译。sp_recompile 命令执行占用时间极少而且很有用。sp_recompile 命令迅速标记存储过程,以便为存储过程生成新的查询计划,它反映表的数据、索引及统计的最新情况。 备注 在大多数数 R/3 正常操作情情况下,没有有必要运行 sp

40、_reecompiile,因为为在对其有利利的情况下,SSQL Seerver 会自动重新新编译存储过过程。但是在在 R/3 环境中也有有过这样的情情况,即 SSAP 和 Microosoft 已发现在有有长期存在且且性能不良的的更新和批处处理过程运行行的表中运行行sp_reecompiile 是很很有好处的。 使用 sp_rrecomppile 最最简便的方法法之一是将表表名称作为命命令参数提交交。这样就会会为重新编译译标记所有与与表名称关联联的存储过程程。例如,如如果 CCMMS 显示在在 VBRPP 表上操作作的更新过程程的执行时间间特别长,那那么就有必要要在该表上运运行 sp_reco

41、mmpile。 执行 sp_rrecomppile 的的示例 (QQuery Analyyzer) 键入 execc sp_rrecomppile VBRP。 按 CTRL + E 执执行命令。 SQL Serrver 77.0 提供供列和索引统统计的自动生生成与维护。统统计辅助查询询处理器确定定最佳查询计计划。默认情情况下,为所所有索引创建建了统计,并并且在为列统统计可能有用用和优化器可可能需要对其其进行推测的的列编译查询询时,SQLL Servver 会自自动创建单列列统计。 为避免对未使用用的统计的长长期维护,SSQL Seerver 为自动创建建的统计(仅仅指那些不是是索引创建的的附带

42、统计)制制定有效时间间。在几次自自动更新之后后,列统计不不再被更新,而而是被丢弃。如如果以后需要要,可以再次次创建。统计计更新与创建建间的开销上上没有什么大大的差异。此此有效时间的的制定不影响响用户创建的的统计。 为使性能最佳,建建议使用自动动统计。统计计的自动创建建和更新是 SQL SServerr 7.0 的默认配置置。该建议不不适用于表 VBHDRR、VBMOOD 和 VVBDATAA。对于这些些表,建议关关闭自动统计计。从本质上上讲,VBHHDR、VBBMOD 和和 VBDAATA 的大大小极不稳定定,也就是说说它们可能频频繁地从空变变成非常大,然然后又变回空空。R/3 仅通过主键键访

43、问这些表表。这些表的的其它统计不不会有什么用用,因为使用用主键的同一一查询计划也也用于每个访访问。基于上上述这些原因因,在这些表表中关闭自动动统计功能是是有利的。 以下命令集将防防止以后在 VBHDRR、VBMOOD 和 VVBDATAA 表上的统统计生成。 要关闭 VBHHDR、VBBMOD 和和 VBDAATA 的自自动统计 (Queryy Anallyzer) 在查询窗口键入入以下命令: exec spp_autoostatss VBHDDR,OFFF exxec spp_autoostatss VBMOOD,OFFF exxec spp_autoostatss VBDAATA,OOFF

44、 按 CTRL + E 执执行命令。 VBHDR、VVBMOD 和 VBDDATA 表表上的现有统统计可以通过过以下命令从从数据库中删删除。 除去现有统计 (Querry Anaalyzerr) 使用 sp_hhelpinndex 命命令确定要除除去的统计名名。例如,要要显示任何 VBMODD 上的现有有统计名称,在在查询窗口中中键入下列命命令: exec spp_helppindexx VBMOOD 按 CTRL + E 执执行命令。查查询分析器结结果窗格中的的 indeex_namme 列将显显示所有索引引与统计的名名称。 在 drop statiisticss 命令中使使用统计名称称。例

45、如,要要除去名为 _WA_SSys_VBBELN_00AEA100A3 的统统计,在查询询窗口中键入入以下命令: drop sttatisttics VVBRP._WA_Syys_VBEELN_0AAEA10AA3 按 CTRL + E 执执行命令。 对表 VBMOOD、VBHHDR 和 VBDATTA 上的所所有统计重复复执行 1 至 4 步步骤。 DBCC SHHOWCONNTIG 命命令用于评估估表中出现的的物理碎片(如如果有)等级级。 运行 DBCCC SHOWWCONTIIG 的示例例 (Queery Annalyzeer) 在查询窗口键入入以下命令: declaree id int

46、 sselectt id = objject_iid(saaptestt1) ddbcc sshowcoontig (id) 按 CTRL + E 执行命令。 应该出现以下输输出: DBCC SHHOWCONNTIG sscanniing ssaptesst1 ttable Taable:sapteest1 (93355783644); inndex IID:1, databbase IID: 5 TABLEE leveel scaan perrformeed. - Pagess Scannned: 41667 - EExtentts Scaanned: 521 - Exttent SSwit

47、chhes: 5520 - Avg.PPages per EExtentt: 8.0 - Scaan Dennsity Bestt Counnt:Acttual CCount: 1100.000% 5221:5211 - LLogicaal Scaan Fraagmenttationn : 11.221% - Extennt Scaan Fraagmenttationn : 0.996% - Avg.BBytes Free per PPage: 198.6 - AAvg.Paage Deensityy (fulll): 97.555% DBCCC exeecutioon commpleteed

48、.If DBCC printted errror mmessagges, ccontacct youur sysstem aadminiistrattor. Scan Deensityy 和 Exteent Sccan Frragmenntatioon 有助于于评定磁盘上上表的组织情情况。百分之之百 Scaan Dennsity 是最佳的可可能值,因为为它表明使用用中的扩展的的最理想数量量(例如,每每个扩展八个个页面的情况况下,扩展完完全得到利用用)。Exttent SScan FFragmeentatiion 通过过表明表关联联的扩展是否否曾经物理移移动至磁盘序序列之外,从从而提供页拆拆分的

49、附加信信息。Exttent SScan FFragmeentatiion 仅在在表定义了聚聚集索引的情情况下才是有有用的信息。 Avg. Paage Deensityy (fulll) 以百百分数表示每每个 SQLL Servver 数据据页上的平均均数据量。有有时,这个百百分数也称为为数据页的充充满度。高的的百分数说明明每个 8 KB 读取取带入 SQQL Serrver 高高速缓冲存储储器的数据多多。总而言之之,高的百分分数说明高速速缓存将包含含更多的有用用信息。举个个例子,考虑虑一下如果 DBCC SHOWCCONTIGG 显示在您您的数据库中中有好几个平平均页密度为为 50% 的表的情

50、况况。如果这些些表含有检索索的多数数据据,那么 SSQL Seerver 高速缓冲存存储器将包含含多数仅包含含 50% 有用数据的的数据页。这这就是说 11 GB 高高速缓冲存储储器仅包含 500 MMB SQLL Servver 数据据。如果将读读取到高速缓缓冲存储器的的所有表的平平均页面密度度提高到接近近 100%,那么一个个 1 GBB 的高速缓缓冲存储器将将包含接近 1 GB 的 SQLL Servver 数据据,这样就好好多了。 如果访问某表的的查询的应答答时间增长到到无法忍受的的程度,则在在该表上运行行 DBCCC SHOWWCONTIIG 命令。如如果 Avgg. Pagges

51、peer Exttent 大大大小于 88.0, EExtentt Scann Fraggmentaation大大于 10-20%或 Avg. Page Densiity (ffull) 大大小于 100% 时,有必要要考虑重建表表的聚集索引引,以便将表表中的数据物物理重排到物物理连续的扩扩展中。重建建聚集索引还还提供了选择择更完整的页页面填充的选选项,以便每每 8 KBB 页压缩更更多的数据。 磁盘上有经过良良好压缩而连连续的数据对对 I/O 性能是有利利的,因为 SQL SServerr 可以在从从此表中提取取数据时利用用有序 I/O(比无序序磁盘 I/O 快得多多)并在每次次读取时将最最

52、多的 SQQL Serrver 有有用数据带入入高速缓冲存存储器。 FillFacctor 是是 CREAATE INNDEX 语语句的可用选选项,它允许许控制索引叶叶级的充满度度。表聚集索索引的叶级是是表的数据页页,因此使用用 FilllFactoor 选项可可以控制使用用聚集索引的的表的数据页页的充满度。 FillFacctor 的的默认值为零零。默认值对对表内所有数数据页都执行行 100% 填充。MMicrossoft 的的 IT 机机构一直在其其 SAP R/3 环环境下的多数数 SQL Serveer 表中使使用 FilllFacttor 的默默认值,性能能极好。建议议将 Filll

53、Facttor 的默默认值用做 R/3 数数据库服务器器测试的起点点。 FillFacctor 要要牢记的主要要关系是应处处理好将最大大量的数据打打包进每个数数据与索引页页的 I/OO 性能与避避免页拆分的的性能优势之之间的关系。当当需要将数据据插入某页,但但该页已满时时,就会发生生页拆分。此此时,必须使使用新页,且且数据在旧页页和新页之间间重组。SQQL Serrver 77.0 增强强型存储结构构使页拆分操操作比 SQQL Serrver 66.5 中的的效率高得多多;对页拆分分的性能处罚罚也没有那么么多。这就解解释了为什么么默认 FiillFacctor 设设置是一个好好的起点的原原因。

54、如果 DBCC SHOWCCONTIGG 命令报告告表中出现大大量物理碎片片,而且表的的响应时间很很差,那么应应该重建该表表上的聚集索索引以使索引引 B 树结结构保持最佳佳形态。 要重建主键,需需要 CREEATE IINDEX 命令的 DDROP_EEXISTIING 选项项。它还为任任一索引的重重建提供了增增强性能。以以下示例假定定前面描述的的原始sapptest11 表中的索索引正在重建建。 重建聚集主键的的示例 (QQuery Analyyzer) 在查询窗口键入入以下命令: create uniquue cluustereed inddex saapt_c11 on ssaptess

55、t2(cool1,cool2,cool3) wwith ddrop_eexistiing 按 CTRL + E 执执行命令。 重建非聚集主键键的示例 (Queryy Anallyzer) 在查询窗口键入入以下命令: create uniquue inddex saapt_c11 on ssaptesst2(cool1,cool2,cool3) wwith ddrop_eexistiing 按 CTRL + E 执执行命令。 重建聚集索引的的示例 (QQuery Analyyzer) 在查询窗口键入入以下命令: create clusttered indexx ckeyy1 on saptees

56、t2(ccol2) with drop_existting 按 CTRL + E 执执行命令。 会有一些插入活活动频率高的的 R/3 环境,且有有必要测试对对数据和索引引页稍低百分分率填充的使使用,以便将将页拆分情况况控制到最少少。有关在 CREATTE INDDEX 语句句中使用FiillFacctor 的的语法的详细细信息,请参参见 SQLL Servver 联机机图书。 文件和文件组设设计 建议将 SQLL Servver 文件件的大小定为为每个 RAAID 数组组至少有三个个大小相等的的 SQL Serveer 文件,并并且这些文件件的大小应设设置为它们预预期能够增长长到的最大值值。使用 aautogrrow 处理理调整大小的的紧急情况。在在确定需要更更多的 I/O 处理能能力且需要将将新的 RAAID 数组组联机时,定定义三个文件件有助于加快快数据重新分分发的速度。要要将数据移动动至新的数组组,可以使用用 ALTEER DATTABASEE 命令修改改数据库,以以便将一个文文件放在新的的 RAIDD 数组中。然然后可以关闭闭 SQL Serveer,可以迅迅速将该文件件移至新数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论