`

SQL Server 性能优化工具使用方法

阅读更多
数据和工作负荷示例

使用下例说明 SQL Server 性能工具的使用。首先创建下表。

create table testtable (nkey1 int identity, col2 char(300) default 'abc', ckey1 char(1))

接下来,在这个表中填充 10,000 行测试数据。可以为列 nkey1 中所填充的数据创建非聚集索引。可以为列 ckey1 中的数据创建聚集索引,col2 中的数据仅仅是填充内容,将每一行增加 300 字节。

declare @counter int

set @counter = 1

while (@counter <= 2000)

begin

insert testtable (ckey1) values ('a')

insert testtable (ckey1) values ('b')

insert testtable (ckey1) values ('c')

insert testtable (ckey1) values ('d')

insert testtable (ckey1) values ('e')

set @counter = @counter + 1

end

数据库服务器将进行下面的两个查询:

select ckey1,col2 from testtable where ckey1 = 'a'

select nkey1,col2 from testtable where nkey1 = 5000

Profiler

SQL Server Profiler 记录数据库服务器中所发生活动的详细信息。可以配置 Profiler 以便用大量的可配置性能信息监视并记录在 SQL Server 中执行查询的一个或多个用户。可在 Profiler 中记录的性能信息有:I/O 统计信息、CPU 统计信息、锁定请求、T-SQL 和 RPC 统计信息、索引和表扫描、警告和引发的错误、数据库对象的创建/除去、连接/断开、存储过程操作、游标操作等等。有关 SQL Profiler 可记录的全部信息,请在 SQL Server Books Online 中搜索字符串“Profiler”。

将 Profiler 信息装载到 .trc 文件中以便用于 Index Tuning Wizard 中

Profiler 和 Index Tuning Wizard 是强大的工具组合,以帮助数据库管理员在表中创建适当的索引。Profiler 将查询所消耗的资源记录在 .trc 文件中。.trc 文件可以由 Index Tuning Wizard 读取,Index Tuning Wizard 同时考虑 .trc 信息和数据库表,然后建议应创建什么样的索引。Index Tuning Wizard 可让管理员选择是自动创建数据库的适当索引,调度索引以便在以后自动创建还是产生一个可以在以后查看和执行的 T-SQL 脚本。

以下是分析查询负荷的步骤:

设置 Profiler

从 SQL Server Enterprise Manager 菜单中选择 Tools/SQL Server Profiler 启动 Profiler。

按 CTRL+N 组合键新建 Profiler 跟踪。

键入此跟踪的名称。

选择 Capture to File:复选框,然后选择要将 Profiler 信息输出到其中的 .trc 文件。

单击 OK。

运行工作负荷

启动 Query Analyzer(从 SQL Server Enterprise Manager 菜单中选择 Tools/SQL Server Query Analyzer 或者从开始菜单中选择开始\程序\Microsoft SQL Server 7.0\Query Analyzer)。

连接到 SQL Server 并设定将在其中创建表的当前数据库。

键入或复制以下查询并将它们粘贴到 Query Analyzer 的查询窗口:

select ckey1,col2 from testtable where ckey1 = 'a'

select nkey1,col2 from testtable where nkey1 = 5000

按 CTRL+E 执行这两个查询。

停止 Profiler

单击红色的正方形以停止 Profiler 跟踪。

将 .trc 装载到 Index Tuning Wizard

从 Profiler 菜单中选择 Tools\Index Tuning WizardsU 启动 Index Tuning Wizard。单击 Next。

选择要分析的数据库。单击 Next。

保持 I have a saved workload file 选项按钮被选,然后单击 Next。

选择 My workload file 选项按钮,找到用 Profiler 创建的 .trc 文件,然后单击 Next。

在 Select Tables to Tune 对话框中,选择需要进行分析的表,然后单击 Next。

Index Tuning Wizard 将在 Index Recommendations 对话框中指出应创建的索引。单击 Next。

此向导可让您选择是立即创建索引,调度将在以后自动执行的索引创建任务还是创建带创建索引命令的 T-SQL 脚本。选择需要的选项,然后单击 Next。

单击 Finish。

Index Tuning Wizard 为示例数据库和工作负荷生成的 T-SQL。

/* Created by:Index Tuning Wizard */

/* Date: 9/7/98 */

/* Time:6:42:00 PM */

/* Server:HENRYLNT2 */

/* Database :test */

/* Workload file :E:\mssql7\Binn\profiler_load.sql */

USE [test]

BEGIN TRANSACTION

CREATE CLUSTERED INDEX [testtable2] ON [dbo].[testtable] ([ckey1])

if (@@error <> 0) rollback transaction

CREATE CLUSTERED INDEX [testtable2] ON [dbo].[testtable] ([ckey1])

if (@@error <> 0) rollback transaction

COMMIT TRANSACTION

Index Tuning Wizard 为示例表和数据所建议的索引就是我们预期的索引。ckey1 只有 5 个唯一值,且每一个值都有 2,000 行。假定其中的一个示例查询 (select ckey1, col2 from testtable where ckey1 = 'a') 要求根据 ckey1 中的某个值对表进行检索,那么在 ckey1 列中创建聚集索引是有意义的。第二个查询 (select nkey1, col2 from testtable where nkey1 = 5000) 根据列 nkey1 的值提取一行。Nkey1 唯一,且有 10,000 行,因此在该列创建非聚集的索引是有意义的。

Profiler/Index Tuning Wizard 组合在涉及许多表和许多查询的实际数据库服务器环境中功能非常强大。当数据库正在进行典型查询时,请使用 Profiler 记录 .trc 文件。然后将 .trc 文件装载到 Index Tuning Wizard,以确定是否创建了正确的索引。根据 Index Tuning Wizard 中的提示自动生成并调度索引创建作业以便在非尖峰时刻运行。定期运行 Profiler/Index Tuning Wizard(比如每周)以查看数据库服务器中所执行的查询是否有较大改动,如果是,则可能需要不同的索引。定期使用 Profiler/Index Tuning Wizard 有助于数据库管理员在查询工作负荷改变以及数据库大小随着时间而增加的同时,保持 SQL Server 以最佳状态运行。

有关详细信息,请在 SQL Server Books Online 中搜索“Index Tuning Wizard”和“Index Tuning Recommendations”。

将 Profiler 信息加载到 SQL Server 表以进行分析

Profiler 提供的另一个选项是将信息记录在 SQL Server 表中。完成后,就可以查询整个表以确定是否有某些查询消耗了过多资源。

将 Profiler 信息记录在 SQL Server 表中

从 SQL Server Enterprise Manager 菜单中选择 Tools/SQL Server Profiler 启动 Profiler。

按 CTRL+N 组合键新建 Profiler 跟踪。

键入跟踪的名称。

单击 Capture to Table:复选框,然后选择要将 Profiler 信息输出到其中的 SQL Server 表。

单击 OK。

结束后,单击红色的正方形停止 Profiler 跟踪。

用 Query Analyzer 分析 Profiler 中记录的信息

在将这些信息记录到 SQL Server 表中后,可以用 Query Analyzer 计算出系统中的哪些查询消耗资源最多。这样,数据库管理员就可以集中时间改进最需要帮助的查询。例如,通常用以下查询分析从 Profiler 记录到 SQL Server 表中的数据。此查询检索数据库服务器中消耗 CPU 资源最多的头 3 项。返回读和写 I/O 信息以及查询的持续时间(用毫秒计)。如果用 Profiler 记录了大量的信息,那么在这个表中创建索引以加快分析查询是有意义的。例如,如果 CPU 即将成为分析这个表的一个重要标准,那么在 CPU 列创建非聚集索引应该是一个不错的主意。

select top 3 TextData,CPU,Reads,Writes,Duration from profiler_out_table order by cpu desc

有关详细信息,请在 SQL Server Books Online 中搜索字符串“Viewing and Analyzing Traces”、“Troubleshooting SQL Server Profiler”、“Tips for Using SQL Server”、“Common SQL Server Profiler Scenarios”、“Starting SQL Server Profiler”和“Monitoring with SQL Server Profiler”。

Query Analyzer

I/O 统计信息

Query Analyzer 的 Connections Options 对话框 General 选项卡中提供了一个 Show stats I/O 选项。选择此复选框可以获取有关 Query Analyzer 中正在执行的查询所消耗 I/O 量的信息。

例如,当选择 Show stats I/O 选项时,查询“select ckey1, col2 from testtable where ckey1 = 'a'”除返回结果集以外,还返回以下 I/O 信息:

Table 'testtable'.Scan count 1, logical reads 400, physical reads 382, read-ahead reads 400.

同样,当选择 Show stats I/O 选项时,查询“select nkey1, col2 from testtable where nkey1 = 5000”除了返回结果集以外,还返回以下 I/O 信息:

Table 'testtable'.Scan count 1, logical reads 400, physical reads 282, read-ahead reads 400.

使用 I/O 统计信息是一种监视查询调整效果的有效方法。例如,在此示例表中创建 Index Tuning Wizard 在上面所推荐的两个索引,然后再次运行查询。

在“select ckey1,col2 from testtable where ckey1 = 'a'”的查询中,聚集索引改进性能的情况如下所示。假定查询需要提取该表的 20%,则性能改进应该是比较合理的:

Table 'testtable'.Scan count 1, logical reads 91, physical reads 5, read-ahead reads 32.

在“select nkey1,col2 f



文章转载自网管之家:http://www.bitscn.com/pdb/mssql/201007/189013.html
分享到:
评论

相关推荐

    SQL.Server性能优化工具Profiler

    Microsoft SQL.Server性能优化工具Profiler

    SQL Server 性能监视与优化.pdf

    视数据库的目的是评估服务器的性能。有效监视包括定期拍摄当前性能的快照来隔离导致问题的...Microsoft SQL Server 和 Microsoft Windows 操作系统提供实用工具,使您可以查看数据库的当前状态并跟踪性能的状态变化。

    SqlServer2008查询性能优化扫描版.part1

    《SQL Server 2008查询性能优化》为你提供了处理查询性能所需要的工具。建立、维护数据库和数据库服务器可能是个困难的工作。当服务器的运行越来越慢时,这个工作就变得更加困难。来自用户的愤怒的电话以及站在你...

    SQL server性能调优

    sql server性能调优 对sql的执行进行监控,用来做效率分析。可以用来做项目优化和SQL功能调优使用。

    高级SQL Server监控、性能图、分析与优化、版本控制源码

    这是一个相当高级的SQL Server监控工具,全面监控SQL Server的活动与性能,分析性能瓶颈,给出优化建议。 监控SQL Server的活动:进程、任务,详细查看当前执行的语句与实际变量值,终止进程 IO/CPU/网络等性能...

    SQLServer数据库应用程序性能优化方法

    出多种基于SQL Server 数据库的应用程序性能优化方法:选择性能优越的服务器;优化数据库设计;使用查询效率较高的查 询语句;使用存储过程;有效的使用事务和批处理;避免阻塞;选择合适的开发工具和采用有效的...

    SQLServer2008查询性能优化 2/2

    书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...

    SQLServer安全及性能优化

    SQLServer安全及性能优化 修补漏洞 安装程序补丁修补漏洞 随时关注微软官方网站补丁升级 关闭不必要的端口 关闭联必要的服务 数据库引擎 SQL Server Analysis Services SQL Server Reporting Services SQL ...

    使用优化实用工具来优化SQL Server性能.pdf

    使用优化实用工具来优化SQL Server性能.pdf

    SQLServer2008查询性能优化 1/2

    书名: SQLServer2008查询性能优化 作者: 弗里奇(Grant Fritchey) 出版社: 人民邮电出版社 出版日期: 2010年8月1日 ISBN: 9787115230294 编辑推荐 《SQL Server 2008查询性能优化》为你提供了处理查询性能所...

    SQL 性能优化工具

    Lesson 1: Concepts – Locks and Lock Manager Lesson 2: Concepts – Batch and Transaction Lesson 3: Concepts – Locks and Applications Lesson 4: Information Collection and Analysis ...

    SQL Server数据库的性能分析和优化策略研究

    随着计算机科学技术和电子信息的巨大发展 ,各个企业都建立起 了各 自的信息系统。而数据库作为信息系统的核心和基 础,也被越来越广泛的应用。...从数据库设计人员的角度出发讨SQL数据库性能优化的问题。

    SqlServer2008查询性能优化扫描版.part2

    《SQL Server 2008查询性能优化》为你提供了处理查询性能所需要的工具。建立、维护数据库和数据库服务器可能是个困难的工作。当服务器的运行越来越慢时,这个工作就变得更加困难。来自用户的愤怒的电话以及站在你...

    SQL Server 数据库技术---基础篇、数据库安全、SQL开发、数据库性能优化

    SQL Server 数据库技术---基础篇(T-SQL基础、数据库几本操作、SQL Server 2008新特性)、数据库安全(SQL Server 2008 安全数据...、数据库性能优化(数据库存储与索引、数据查询、事务处理、数据库系统调优 工具)

    使用DMV对SQLServer进行性能调优

    从2005以后引入了DMO(DMV+DMF)作为SQLServer管理工具,本书通过使用DMO,专注于SQLServer的性能优化。性能优化的手段有多种,但是DMO具有便捷的特性,使其在SQLServer的管理中具有不可替代并越来越重要的作用,...

    SQL Server 2008宝典

    第2部分为SQLServer 2008的准备篇,介绍了SQL Server 2008的功能、特性、各版本的比较、安装方法、SQL Server 2008的服务、客户端的工具等;第3部分为SQL Server 2008的基本操作篇,介绍如何管理与配置SQL Server ...

    数据库性能优化工具

    ORACLE,SQL SERVER等数据库性能优化工具

    数据库SQLSERVER索引

    SQLServer中有几个可以让你检测、调整和优化SQLServer性能的工具。在本文中,我将说明如何用SQLServer的工具来优化数据库索引的使用,本文还涉及到有关索引的一般性知识。关于索引的常识影响到数据库性能的最大因素...

    SQL Server数据库性能优化

    设计1个应用系统似乎并不难,但是要想使系统达到最优化的性能并不是一件容易的事。在开发工具、数据库设计、应用...本文以SQL Server为例,从后台数据库的角度讨论应用程序性能优化技巧,并且给出了一些有益的建议。

Global site tag (gtag.js) - Google Analytics