




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MS SQL Server 7.0 的 SAP R/3 性能优化指南 1998 年 11 月发行 读者 本文档所提供的信息可以帮助 SAP R/3 数据库管理员理解 Microsoft SQL Server 7.0 的各个方面。这些方面可以经过优化,从而在与 SAP R/3 环境相关的特有数据库工作负荷条件下提供最佳性能。 虽然本文档是为 SAP R/3 站点量身定制的,但是一定要注意本文档中描述的 SQL Server 功能和优化技巧不仅仅适用于 SAP R/3。大型到超大型数据库 (VLDB) 需要支持大量用户连接和大的工作负荷,工作于这一环境中的数据库管理员将从本文的信息中获益匪浅。 引言 本篇有关性能优化的文档将讨论 SAP R/3 环境中的 SQL Server 7.0 最佳配置。本指南分为四个逻辑部分。第一部分,讨论与 Microsoft Windows NT Server 相关的配置选项。第二部分,描述 SAP R/3 环境中 SQL Server 的重要配置选项。前面这两个部分直截了当,其中还包含了在 SQL Server 的初始配置过程中几分钟就可以完成的一些步骤。第三部分,讨论 SQL Server 的索引设计,因为它与 SAP R/3 相关。索引分析往往是一个极其棘手的过程,为使数据库性能最佳需要持续不断地执行索引分析。 Microsoft TechNet 中的“Microsoft SQL Server 7.0 性能优化指南”应该作为本文第三部分的补充读物。该指南综合讨论硬件 I/O 性能、索引设计以及 SQL Server 性能优化工具。第四部分,讨论 R/3 数据库中的 SQL Server 文件和文件组的最佳应用。 Windows NT 配置 Windows NT 页面文件的大小应该至少比服务器上安装的 RAM 大三倍,而且要至少有 10 亿字节 (1 GB)。 设置页面文件大小 1. 在开始菜单上,指向设置,然后单击控制面板。 2. 双击系统,然后双击性能选项卡。 3. 单击更改,然后在起始大小 (MB) 框中,输入页面文件的大小(按兆字节 (MB) 计)。 4. 单击确定。 通常,VMM(虚拟内存管理器)已经根据 SQL Server 安装的默认设置进行了适当的配置。 检查和/或配置 VMM 设置 1. 在开始菜单上,指向设置,然后单击控制面板。 2. 双击网络,然后单击服务选项卡。 3. 双击服务器,选择最大化网络应用程序吞吐量,然后单击确定。 配置最小影响的屏幕保护程序和墙纸 1. 在开始菜单上,指向设置,然后单击控制面板。 2. 双击显示,然后单击背景选项卡。 3. 选定图案为(无),并选定墙纸为(无)。 4. 单击应用,然后单击屏幕保护程序选项卡。 5. 在屏幕保护程序下,选定 Blank Screen,然后选定密码保护。 6. 单击应用。 一些多处理器服务器可以将联网 I/O 请求动态分发到最不繁忙的处理器。该硬件功能有助于防止在服务于许多联网请求的系统中出现处理器瓶颈和不良网络性能。该功能通常称为对称中断分发,使用该功能可以改进可扩展性能并防止出现在其它处理器还有剩余容量时某一个处理器却成为瓶颈的情况。它在 Pentium 处理器系列的 Windows NT 4.0 HAL(硬件抽象层)中可以找到。Windows 2000 也支持该功能。 不同处理器操作平台使用不同方法分发中断。网卡的中断分发是由每个处理器操作平台的 HAL 来控制的。HAL 实施的中断方案取决于处理器的性能。某些处理器包含了中断控制硬件,如高级可编程中断控制器 (APIC)。APIC 允许处理器将中断路由到计算机上的其它处理器。有关特定处理器操作平台所使用的分发方法的详细信息,请咨询操作平台供应商。 在默认情况下,Windows NT 4.0 不使用对称中断分发,而是将与网卡 (NIC) 相关的延迟进程调用 (DPC) 活动分配给系统中编号最大的处理器。在安装有多个 NIC 且 NIC 活动的系统中,每个额外的 NIC 的活动都指派到下一个编号最大的处理器。 如果处理器频繁以百分之百的容量(性能监视器所显示的 Processor: % Processor Time = 100%)操作而且一半以上时间用于为 DPC 提供服务上(即如果 Processor: % DPC Time 50%),那么可以通过调整 ProcessorAffinityMask 来提高性能。 警告 注册表编辑器使用不当会导致严重的问题,有可能需要重新安装操作系统。使用注册表编辑器要特别小心。Microsoft 不保证能够解决因注册表编辑器使用不当而导致的问题。建议您在执行修改前备份注册表内容,这样在注册表修改出现问题时就能够还原内容。有关备份和还原注册表信息的说明可以在注册表编辑器的联机帮助中找到。 在能够进行对称中断分发的多处理器服务器上,将 Windows NT 注册表中 ProcessorAffinityMask 数值项的值设置为零。这样就会将网络 I/O 请求动态分发到最有能力处理请求的处理器中。ProcessorAffinityMask 位于:HKEY_LOCAL_MACHINE System CurrentControlSet Services NDIS Parameters。 启动注册表编辑器以设置 ProcessorAffinityMask 1. 在开始菜单上,单击运行。 2. 键入 regedt32。 在注册表编辑器中找到适当关键字 1. 在窗口菜单中选择 HKEY_LOCAL_MACHINE。 2. 在注册表编辑器左边窗格中,双击 SYSTEM。 3. 双击 CurrentControlSet,双击 Services,双击 NDIS ,然后双击 Parameters。 将 ProcessorAffinityMask 设置为零 1. 在注册表编辑器右边窗格中,双击 ProcessorAffinityMask。 2. 键入 0(零),然后单击确定。 3. 在注册表菜单上,单击退出。 SQL Server 配置 SQL Server 内存的推荐设置取决于 R/3 实例对数据库服务器的使用情况。如果 SQL Server 是作为专用数据库服务器而运行,建议 SQL Server 按照默认值动态调整它所需要的内存。 R/3 实例最小值最大值专用数据库服务器默认值默认值更新实例已安装 RAM 的 40%已安装 RAM 的 65%中心实例已安装 RAM 的 45%已安装 RAM 的 45%在有 2 GB RAM 的中心实例上设置内存的例子 (Enterprise Manager) 1. 在右边窗格中,双击 SQL Server Group 图标。 2. 双击 R/3 数据库服务器的 SQL Server 图标。 3. 单击 Memory 选项卡,然后单击 Use a fixed memory size (MB)。 4. 将 Use a fixed memory size (MB) 下的滑块移动到 900。 5. 选定 Reserve physical memory for SQL Server ,单击 Apply ,然后单击 OK。 完成 SQL Server 的内存配置之后,建议使用 set working set size 选项保留与 SQL Server 内存设置相等的物理内存空间。设置该选项意味着 Windows NT 不转换出 SQL Server 页。 配置设置工作集大小选项的例子 (Enterprise Manager) 1. 在右边窗格中,双击 SQL Server Group 图标。 2. 双击 R/3 数据库服务器的 SQL Server 图标。 3. 单击 Memory 选项卡,然后选定 select Reserve physical memory for SQL Server。 4. 单击 Apply,然后单击 OK。 SAP 测试显示出,在大多数 R/3 数据库服务器操作环境下网络数据包大小为 8,192 字节时性能最佳。该选项需要使用 SQL Server Query Analyzer 来设置。 设置网络数据包大小 (Query Analyzer) 1. 键入 exec sp_configure network packet size, 8192。 2. 键入 reconfigure with override。 3. 按 CTRL + E 执行以上命令。 在专用服务器上,建议使用 SQL Server priority boost 选项。 设置优先级提升选项 (Enterprise Manager) 1. 在右边窗格中,双击 SQL Server Group 图标。 2. 双击 R/3 数据库服务器的 SQL Server 图标。 3. 单击 Processor 选项卡,然后在 Processor Control 框中,选定 Boost SQL Server priority on Windows NT。 建议将 SQL Server index create memory 选项配置为 16 MB。该选项需要使用 SQL Server 查询分析器来设置。 设置索引创建内存选项 (Query Analyzer) 1. 键入 exec sp_configure index create memory, 16000。 2. 键入 reconfigure with override。 3. 按 CTRL + E 执行以上命令。 禁用 VBHDR、VBMOD 和 VBDATA 表的页面锁定 (Query Analyzer) 1. 在查询窗口键入以下命令: exec sp_indexoption VBHDR,allowpagelocks,false exec sp_indexoption VBMOD,allowpagelocks,false exec sp_indexoption VBDATA,allowpagelocks,false 2. 按 CTRL + E 执行以上命令。 如果数据库服务器上的所有处理器的利用率都很高(性能监视器表明在多处理器服务器上所有处理器的处理器利用率全部大于 95%),那么就有必要打开 SQL Server lightweight pooling。在所有处理器都非常接近完全利用时,lightweight pooling 可以帮助恢复大约 5% 到 7% 的 CPU。 打开 SQL Server lightweight pooling (Enterprise Manager) 1. 在右边窗格中,双击 SQL Server Group 图标。 2. 双击 R/3 数据库服务器的 SQL Server 图标。 3. 单击 Processor 选项卡,选定 select Use Windows NT Fibers,然后单击 Apply。 4. 当提示重新启动 SQL Server 时,单击 Yes,然后单击 Ok。 SQL Server affinity mask 配置选项提供了不能执行 SQL Server 线程的特定处理器的规范。最好运用 SQL Server 关系掩码的默认设置,即零。关系掩码的设置为零表明允许在所有处理器上执行 SQL Server 线程。几乎在所有情况下,该设置都会使性能最佳,因为它避免了在其它处理器上有剩余容量的情况下而在某一台处理器上的 SQL Server 连接非常繁忙的情况。Microsoft 的 IT 机构和参与 SQL Server 7.0 Early Adopter 计划的 SAP R/3 用户已运用了关系掩码的默认设置,结果性能良好。 索引设计与维护 “Microsoft SQL Server 7.0 性能优化指南”提供了有关 SQL Server 索引和性能优化的重要信息。此文档可在“查找详细信息”处找到。 大型的 SAP R/3 安装会有一些包含非常多行的 SQL Server 表。有了大的表,索引对数据库 I/O 性能影响极大。 在单个数据库行或少量数据库行上搜索并执行的操作,应该有一个基于提供最高级别选择性的一列或几列所定义的非聚集或聚集索引。这样,SQL Server 查询处理器和存储引擎就能够将检索行所需的 I/O 控制到最小化。例如,如果必须定期从非常大的 Orders 表中根据 orderid 来检索单个定单记录,那么基于 orderid 列定义索引可以加快查询的速度就是有意义的。 在多数数据库行上搜索和执行的操作应该基于定义范围扫描的列定义聚集索引。从非常大的七月份 Orders 表中检索所有定单的查询就是范围扫描的一个例子。在这种情况下,Orders 表的日期列就是聚集索引的最佳列。 即将发行的 SAP R/3 4.5B 版本将带有一个影响 SQL Server 聚集索引选择灵活性的重要功能。在 4.5B 版中,R/3 数据字典对除主键列以外的列聚集索引有被动支持。被动支持的意思是:在数据库表已改变以致于聚集索引从主键移至了另一列或列集的情况下,SAP R/3 数据字典会识别并记录 SQL Server 聚集索引的位置。创建聚集索引需要使用与 R/3 工具对应的 SQL Server 工具。但是,聚集索引的位置在创建之后不会在数据库转换和 R/3 版本升级过程中丢失。 4.5B 以后的 SAP R/3 版本中有可能包含 SQL Server 聚集索引的积极支持。积极支持的意思是:除前面所讲到的 R/3 Data Dictionary供的支持外,R/3 工具还将支持在 SQL Server 表上的列(除主键列以外)的聚集索引创建。 聚集索引支持中的这些更改与希望改进其 R/3 报告查询性能的 R/3 数据库管理员的想法有很大出入。运行 SAP R/3 的大型公司的月末和季度报告可能会使用数据库服务器上的范围扫描。通常情况下会是这样一种情况:在大表上所执行的范围扫描将不以与定义表的主键相同的列为基础。目前,SAP R/3 SQL Server 数据库实施将所有表上的主键配置为聚集主键。某些情况对测试非主键组成部分且常常为了报告目的而用于大型表的列的聚集索引的使用非常有利。ALTER TABLE 命令用于将聚集主键更改为非聚集主键。 以下索引分析示例讨论了这样一种情况,即将聚集主键更改为非聚集主键以便聚集索引可以基于另一列进行定义并预排将聚集主键更改为非聚集主键所涉及的步骤,这一点是有意义的。 有关聚集和非聚集索引选择的详细信息,应参阅“Microsoft SQL Server 7.0 性能优化指南”。 SAP R/3 在 ST04 事务处理中提供 MSSTATS 工具,可以帮助 R/3 数据库管理员跟踪数据库服务器上所执行的 SQL Server 存储过程的资源占用。所有 R/3 与数据库服务器的正常交互作用都使用存储过程执行。 MSSTATS 提供有助于根据资源使用区分存储过程的信息。MSSTATS 返回的信息的例子包括:存储过程的调用次数、用于调用存储过程的平均和最长时间、存储过程调用所返回的行平均数和总行数、存储过程是否使用了游标、存储过程用于提取的时间与空闲时间等等。 MSSTATS 提供了用于确定在 R/3 数据库服务器上所运行的费用最高的存储过程的重要工具。性能分析应集中于这些费用最高的查询。 使用以下 SQL Server 表示例可以模仿与许多 SAP R/3 表非常类似的数据模式。两个示例查询将使用该此测试表进行分析。其目的是说明如何在 R/3 数据库服务器环境中很好地利用 SQL Server 索引。 示例数据以下脚本创建名为 saptest1 的表并在其中加入 100,000 个记录。第一个名为 col1 的列没有选择性。每一行的 col1 数值是一样的 (000)。这是为了模拟 SAP R/3 中非常常见的 MANDT 列,通常它不太具有选择性。第二个名为 col2 的列设计为带有一些选择性,因为每隔 100 行就插入了一个 a 数值。 SQL Server modulo (%) 操作符用于检测每第 100 行的插入。最后一个名为 col3 的列的选择性极高。每一行都有唯一的 col3 数值。 创建示例数据 (Query Analyzer) 1. 在查询窗口键入以下命令: create table saptest1 ( col1 char(4) not null default 000, col2 char(4) not null default zzzz, col3 int not null, filler char(300) default abc ) declare counter int set nocount on set counter = 1 while (counter Extended Help。单击 Indexes,然后按照联机指示执行。 执行索引更改 (Query Analyzer) 1. 在查询窗口键入以下命令: alter table saptest1 drop constraint sapt_c1 alter table saptest1 add constraint sapt_c1 PRIMARY KEY NONCLUSTERED (col1,col2,col3) create clustered index ckey1 on saptest1(col2) create index nkey1 on saptest1(col3) 2. 按 CTRL + E 执行命令。 第二组索引的结果改进索引的单行取数据:select * from saptest1 where col3 = 5000基于文本的 ShowPlan 输出: |-Bookmark Lookup(BOOKMARK:(Bmk1000), OBJECT:(pubs.dbo.saptest1) WITH PREFETCH) |-Index Seek(OBJECT:(pubs.dbo.saptest1.nkey1), SEEK:(saptest1.col3=5000) ORDERED) 等量图形显示计划输出。 统计 I/O 的查询结果集和数据库 I/O (Query Analyzer): col1 col2 col3 filler 000 a 5000 abc (1 row(s) affected) Table saptest1.Scan count 1, logical reads 5, physical reads 0, read-ahead reads 0. Showplan 现在表明 SQL Server 正在对索引 nkey1 使用索引搜索而不是索引扫描。索引搜索是指:SQL Server 能够快速浏览 nkey1 B 树结构(而不是象前面例子中的扫描索引的叶级),并使用书签查找来找到与键值 5000 关联的数据行。这一从索引扫描到索引搜索的改变对 I/O 性能有极大的影响。要执行查询,仅需要 SQL Server 数据高速缓存中的 5 个 I/O,而前一个例子中,需要 240 个。 改进索引的范围扫描:select * from saptest1 where col2 = a基于文本的 ShowPlan 输出: |-Clustered Index Seek(OBJECT:(pubs.dbo.saptest1.ckey1), SEEK:(saptest1.col2=a) ORDERED) 等量图形显示计划输出。 统计 I/O 的查询结果集和数据库 I/O (Query Analyzer): col1 col2 col3 filler 000 a 100 abc 000 a 200 abc 000 a 300 abc . . . 000 a 99800 abc 000 a 99900 abc 000 a 100000 abc (1000 row(s) affected) Table saptest1.Scan count 1, logical reads 48, physical reads 0, read-ahead reads 0. Showplan 再次表明 SQL Server 正在对索引 ckey1 使用索引搜索而不是索引扫描。在聚集索引搜索情况下,不需要进行书签查找,因为聚集索引 B 树的叶级已包含表数据。索引扫描到索引搜索的改变再次对 I/O 性能产生重大而又积极影响。要提取 1,000 行,仅需要对 SQL Server 高速缓冲存储器的 48 次读取,而在前一个例子中则需要 4,500 个 I/O。I/O 的数量已大大减少,因此,完成该查询不再需要物理磁盘 I/O,因为所需要的页在 SQL Server 数据高速缓存中已经有了。物理读取和预读读取的数字都是零,这就说明了这一点。切记:预读读取是每个读取为 64 KB 的物理磁盘读取,物理读取是每个读取为 8 KB 的物理磁盘读取。 索引分析的观察与结论从前面的例子中可以清楚看出:索引设计对 SQL Server 查询中的 I/O 性能起着举足轻重的作用。范围扫描的例子特别用来说明:在 R/3 环境中,还可能有适合于除主键列以外的列的聚集索引的情况。特别是对于要在其上执行报告的大型表来说,这是很有可能的。例如,如果大型表根据日期列进行报告,但是日期列未包含在聚集主键中,那么对于聚集索引测试日期列的使用就非常有用。 在 SQL Server 7.0 中,聚集索引中所包含的列和字节越多,该特定表的非聚集索引越大。这是因为该表的聚集索引和非聚集索引都使用构成聚集索引的列。非聚集索引包含群集键并使用群集键定位 rowdata。如果表上没有聚集索引,则此情况不适用。相反,在这种情况下表是作为堆集来管理的。有关详细信息,请参见 SQL Server 联机图书。 既然非聚集索引在非聚集 B 树结构中包含群集键,要注意两种影响。第一,一定要保持较小的聚集索引规模,因为它不仅影响聚集索引的大小和性能,而且还影响该表中的所有非聚集索引的大小和性能。第二,一定要记住非聚集索引包含群集键,因为在非聚集索引包含满足查询(群集键除外)所需的所有列的情况下,查询处理器可以使用键值列帮助涵盖查询。 涉及群集键的涵盖查询示例以下是一个简单的例子,它说明了在群集键仅包含非聚集索涵盖给定查询所需的其它信息的情况下,查询处理器将非聚集索引用作涵盖索引,并无须使用书签查找从表中提取数据。有关涵盖查询与索引设计的详细信息,请参见“Microsoft SQL Server 7.0 性能优化指南”。 建立以下表 (Query Analyzer) 1. 在查询窗口键入以下命令: create table saptest2 (col1 int, col2 char(4) default a, filler char(300) default zzzz) declare counter int set counter = 1 while (counter = 1000) begin insert saptest2 (col1) values (counter) set counter = counter + 1 end insert saptest2 values (1001,sap,R/3) create clustered index sap_CK1 on saptest2(col1) create nonclustered index sap_NCK1 on saptest2(col2) 2. 按 CTRL + E 执行命令。 显示并比较以下两种查询计划 (Query Analyzer) 1. 在查询窗口键入以下命令: select * from saptest2 where col2 = sap select col1,col2 from saptest2 where col2 = sap 2. 分别选择每个查询,然后按 CTRL + L 显示图形显示计划。 使用第二个查询不需要书签查找,因为非聚集索引暗含群集键,因此涵盖了查询。 当解决 R/3 程序长期存在的问题时,要牢记一种潜在的操作方法,即使用 sp_recompile 标记存储过程以便快速重编译。sp_recompile 命令执行占用时间极少而且很有用。sp_recompile 命令迅速标记存储过程,以便为存储过程生成新的查询计划,它反映表的数据、索引及统计的最新情况。 备注 在大多数 R/3 正常操作情况下,没有必要运行 sp_recompile,因为在对其有利的情况下,SQL Server 会自动重新编译存储过程。但是在 R/3 环境中也有过这样的情况,即 SAP 和 Microsoft 已发现在有长期存在且性能不良的更新和批处理过程运行的表中运行sp_recompile 是很有好处的。 使用 sp_recompile 最简便的方法之一是将表名称作为命令参数提交。这样就会为重新编译标记所有与表名称关联的存储过程。例如,如果 CCMS 显示在 VBRP 表上操作的更新过程的执行时间特别长,那么就有必要在该表上运行 sp_recompile。 执行 sp_recompile 的示例 (Query Analyzer) 1. 键入 exec sp_recompile VBRP。 2. 按 CTRL + E 执行命令。 SQL Server 7.0 提供列和索引统计的自动生成与维护。统计辅助查询处理器确定最佳查询计划。默认情况下,为所有索引创建了统计,并且在为列统计可能有用和优化器可能需要对其进行推测的列编译查询时,SQL Server 会自动创建单列统计。 为避免对未使用的统计的长期维护,SQL Server 为自动创建的统计(仅指那些不是索引创建的附带统计)制定有效时间。在几次自动更新之后,列统计不再被更新,而是被丢弃。如果以后需要,可以再次创建。统计更新与创建间的开销上没有什么大的差异。此有效时间的制定不影响用户创建的统计。 为使性能最佳,建议使用自动统计。统计的自动创建和更新是 SQL Server 7.0 的默认配置。该建议不适用于表 VBHDR、VBMOD 和 VBDATA。对于这些表,建议关闭自动统计。从本质上讲,VBHDR、VBMOD 和 VBDATA 的大小极不稳定,也就是说它们可能频繁地从空变成非常大,然后又变回空。R/3 仅通过主键访问这些表。这些表的其它统计不会有什么用,因为使用主键的同一查询计划也用于每个访问。基于上述这些原因,在这些表中关闭自动统计功能是有利的。 以下命令集将防止以后在 VBHDR、VBMOD 和 VBDATA 表上的统计生成。 要关闭 VBHDR、VBMOD 和 VBDATA 的自动统计 (Query Analyzer) 1. 在查询窗口键入以下命令: exec sp_autostats VBHDR,OFF exec sp_autostats VBMOD,OFF exec sp_autostats VBDATA,OFF 2. 按 CTRL + E 执行命令。 VBHDR、VBMOD 和 VBDATA 表上的现有统计可以通过以下命令从数据库中删除。 除去现有统计 (Query Analyzer) 1. 使用 sp_helpindex 命令确定要除去的统计名。例如,要显示任何 VBMOD 上的现有统计名称,在查询窗口中键入下列命令: exec sp_helpindex VBMOD 2. 按 CTRL + E 执行命令。查询分析器结果窗格中的 index_name 列将显示所有索引与统计的名称。 3. 在 drop statistics 命令中使用统计名称。例如,要除去名为 _WA_Sys_VBELN_0AEA10A3 的统计,在查询窗口中键入以下命令: drop statistics VBRP._WA_Sys_VBELN_0AEA10A3 4. 按 CTRL + E 执行命令。 5. 对表 VBMOD、VBHDR 和 VBDATA 上的所有统计重复执行 1 至 4 步骤。 DBCC SHOWCONTIG 命令用于评估表中出现的物理碎片(如果有)等级。 运行 DBCC SHOWCONTIG 的示例 (Query Analyzer) 1. 在查询窗口键入以下命令: declare id int select id = object_id(saptest1) dbcc showcontig (id) 2. 按 CTRL + E 执行命令。 3. 应该出现以下输出: DBCC SHOWCONTIG scanning saptest1 table. Table:saptest1 (933578364); index ID:1, database ID: 5 TABLE level scan performed. - Pages Scanned.: 4167 - Extents Scanned.: 521 - Extent Switches.: 520 - Avg.Pages per Extent.: 8.0 - Scan Density Best Count:Actual Count.: 100.00% 521:521 - Logical Scan Fragmentation .: 11.21% - Extent Scan Fragmentation .: 0.96% - Avg.Bytes Free per Page.: 198.6 - Avg.Page Density (full).: 97.55% DBCC execution completed.If DBCC printed error messages, contact your system administrator. Scan Density 和 Extent Scan Fragmentation 有助于评定磁盘上表的组织情况。百分之百 Scan Density 是最佳的可能值,因为它表明使用中的扩展的最理想数量(例如,每个扩展八个页面的情况下,扩展完全得到利用)。Extent Scan Fragmentation 通过表明表关联的扩展是否曾经物理移动至磁盘序列之外,从而提供页拆分的附加信息。Extent Scan Fragmentation 仅在表定义了聚集索引的情况下才是有用的信息。 Avg. Page Density (full) 以百分数表示每个 SQL Server 数据页上的平均数据量。有时,这个百分数也称为数据页的充满度。高的百分数说明每个 8 KB 读取带入 SQL Server 高速缓冲存储器的数据多。总而言之,高的百分数说明高速缓存将包含更多的有用信息。举个例子,考虑一下如果 DBCC SHOWCONTIG 显示在您的数据库中有好几个平均页密度为 50% 的表的情况。如果这些表含有检索的多数数据,那么 SQL Server 高速缓冲存储器将包含多数仅包含 50% 有用数据的数据页。这就是说 1 GB 高速缓冲存储器仅包含 500 MB SQL Server 数据。如果将读取到高速缓冲存储器的所有表的平均页面密度提高到接近 100%,那么一个 1 GB 的高速缓冲存储器将包含接近 1 GB 的 SQL Server 数据,这样就好多了。 如果访问某表的查询的应答时间增长到无法忍受的程度,则在该表上运行 DBCC SHOWCONTIG 命令。如果 Avg. Pages per Extent 大大小于 8.0, Extent Scan Fragmentation大于 10-20%或 Avg. Page Density (full) 大大小于 100% 时,有必要考虑重建表的聚集索引,以便将表中的数据物理重排到物理连续的扩展中。重建聚集索引还提供了选择更完整的页面填充的选项,以便每 8 KB 页压缩更多的数据。 磁盘上有经过良好压缩而连续的数据对 I/O 性能是有利的,因为 SQL Server 可以在从此表中提取数据时利用有序 I/O(比无序磁盘 I/O 快得多)并在每次读取时将最多的 SQL Server 有用数据带入高速缓冲存储器。 FillFactor 是 CREATE INDEX 语句的可用选项,它允许控制索引叶级的充满度。表聚集索引的叶级是表的数据页,因此使用 FillFactor 选项可以控制使用聚集索引的表的数据页的充满度。 FillFactor 的默认值为零。默认值对表内所有数据页都执行 100% 填充。Microsoft 的 IT 机构一直在其 SAP R/3 环境下的多数 SQL Server 表中使用 FillFactor 的默认值,性能极好。建议将 FillFactor 的默认值用做 R/3 数据库服务器测试的起点。 FillFactor 要牢记的主要关系是应处理好将最大量的数据打包进每个数据与索引页的 I/O 性能与避免页拆分的性能优势之间的关系。当需要将数据插入某页,但该页已满时,就会发生页拆分。此时,必须使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现场人员往来管理办法
- 现场生产安全管理办法
- 玻璃改色过程管理办法
- 珠海常住人员管理办法
- 班级管理办法协调机制
- 理化专业工作管理办法
- 瓯海纳税筹划管理办法
- 甘肃孩子厌学管理办法
- 生产企业发票管理办法
- 生态保护工程管理办法
- 文创市集限定摊位协议
- 2025秋人教部编版三年级上册语文教学计划
- 妇产科护理 课件06章-正常产褥期母婴的护理
- 《劳模工匠之光》课件 第1、2单元 民族大厦的基石、改革攻坚的先锋
- 2025年中国癌症筛查及早诊早治指南(试行)
- 2025年全国企业员工全面质量管理知识竞赛题库及答案
- 基孔肯雅热防控指南专题课件
- 2025年中级钳工技能鉴定考核试题库(附答案)
- 2025秋教科版科学二年级上册教学课件:第一单元第1课 动物的家
- GB/T 15620-2025镍及镍合金实心焊丝和焊带
- 普通高中生物学课程标准 (2025 年版 2025 年修订 )
评论
0/150
提交评论