• ----:)欢迎访问源码网(:----
    • 首页
    • 博客
    • 学院
    • 下载
    • 论坛
    • 影视
    • 发布源码
    • RSS
    • ITPig
    • 笑话网
    • 百家姓
    • 繁體中文

源码网 - 中国第一源码门户
选择镜像:网通镜像 - 电信主站
  • 首 页
  • 新闻动态
  • 网站运营
  • 网页制作
  • WEB开发
  • 编程开发
  • 图像媒体
  • 操作系统
  • 数据库
  • 服务器
热门搜索 优化 SEO 故事 cms IIS7 MySQL 个人 AdSense 主题推广 | 文章搜索: 高级搜索
会员登录/控制面版您的位置: 学院首页 >> 数据库 >> MSSQL >> 详细内容
 

推荐文章

  • SQL数据库的备份、压缩与SQL数据库数据处理的方法
  • 压缩SQL数据库
 
 

热点文章

  • 安装SQL Server 2005实例环境图解
  • SQL数据库的备份、压缩与SQL数据库数据处理的方法
  • SQL SERVER 2005数据库镜像
  • SQL数据库还原出现错误112(磁盘空间不足)的解决办法
  • Server 2005性能排错
  • 在SQL Server中的关系型数据仓库分区策略
  • 如何使用SQL Server 2000中的XML功能
  • 压缩SQL数据库
  • SQL Server 2000中的SQL语言简介
  • SQLServer删除日志方法
  • SQL精妙语句
  • SQL Server 2000中的SQL语言简介(一)
 
 

相关文章

 
 

百度搜索

 
 

Server 2005性能排错

  • 阅览次数:
  • 文章来源: a hear
  • 原文作者: 不详
  • 整理日期: 2007-04-06
  • 发表评论
  • 字体大小:
  • 小
  • 中
  • 大

检测

内部查询的并行问题可以通过下列方法检测。

系统监视器(Perfmon)

考虑SQL Server:SQL Statistics – Batch Requests/sec 计数器,并查看SQL Server联机丛书中的“SQL Statistics Object”获取更多信息。

因为在考虑使用并行计划前,查询必须评估开销超过为并行配置设置的开销阀值(默认被设置为5),服务器每秒处理的批小于运行在并行计划中的批。运行很多并行查询的服务器一般配置为较小的每秒批请求数(例如,小于100的值)。

DMVs

在运行的服务器上,你可以使用下列查询确认在给定会话中是否可以并行运行任何活动的请求。

select

r.session_id,

r.request_id,

max(isnull(exec_context_id, 0)) as number_of_workers,

r.sql_handle,

r.statement_start_offset,

r.statement_end_offset,

r.plan_handle

from

sys.dm_exec_requests r

join sys.dm_os_tasks t on r.session_id = t.session_id

join sys.dm_exec_sessions s on r.session_id = s.session_id

where

s.is_user_process = 0x1

group by

r.session_id, r.request_id,

r.sql_handle, r.plan_handle,

r.statement_start_offset, r.statement_end_offset

having max(isnull(exec_context_id, 0)) > 0

通过这些信息,查询的文本可以通过使用sys.dm_exec_sql_text轻松获取,而查询计划可以使用sys.dm_exec_cached_plan获取。

你也可以搜索符合运行在并行的计划。这可以通过搜索缓存的计划来查看如果关系操作符有Parrallel属性为非零的值。这些计划也许可以不运行在平行中,但是他们如果系统不忙,他们也适合这样做。

--

-- Find query plans that may run in parallel

--

select

p.*,

q.*,

cp.plan_handle

from

sys.dm_exec_cached_plans cp

cross apply sys.dm_exec_query_plan(cp.plan_handle) p

cross apply sys.dm_exec_sql_text(cp.plan_handle) as q

where

cp.cacheobjtype = 'Compiled Plan' and

p.query_plan.value('declare namespace

p="http://schemas.microsoft.com/sqlserver/2004/07/showplan";

max(//p:RelOp/@Parallel)', 'float') > 0

一般来说,查询的持续时间长于CPU时间总量,因为一些时间花费在等待资源上例如锁或物理I/O。查询使用CPU时间长于持续时间的唯一场景是当查询运行在并行计划例如多线程并发使用CPU。注意并不是所有并行查询将证明这种行为(CPU时间大于持续时间)。

select

qs.sql_handle,

qs.statement_start_offset,

qs.statement_end_offset,

q.dbid,

q.objectid,

q.number,

q.encrypted,

q.text

from

sys.dm_exec_query_stats qs

cross apply sys.dm_exec_sql_text(qs.plan_handle) as q

where

qs.total_worker_time > qs.total_elapsed_time

SQL Trace

Look for the following signs of parallel queries,

which could be either statements or batches that

have CPU time greater than the duration.

select

EventClass,

TextData

from

::fn_trace_gettable('c:\temp\high_cpu_trace.trc', default)

where

EventClass in (10, 12) -- RPC:Completed, SQL:BatchCompleted

and CPU > Duration/1000 -- CPU is in milliseconds, Duration in microseconds

Or can be Showplans (un-encoded) that have Parallelism operators in them

select

EventClass,

TextData

from

::fn_trace_gettable('c:\temp\high_cpu_trace.trc', default)

where

TextData LIKE '%Parallelism%'

解决

任何运行在并行计划的查询被查询优化器认为是成本昂贵的,并会超过并行阀值,默认为5(粗略的是在涉及的机器上5秒执行一次)。任何通过上述方法确认的查询都是以后要调节的候选者。

◆使用Database Engine Tuning Advisor查看是否任何索引改变,改变索引视图或分区改变能减少查询的开销

◆检查实际值和评估集的重要不同因为评估集在评估查询开销中是重要因素。如果找到重要的不同:

如果auto create statistics数据库设置被禁用,确认在Showplan输出的Warnings列中没有MISSING STATS项。

尝试在关闭评估的表上运行UPDATE STATISTICS。

验证查询没有使用优化器无法精确评估的查询构造,例如多语句表值函数或CLR函数,表值或Transact-SQL变量比较(参数比较是可以的)。

◆评估是否可以使用不同的Transact-SQL语句或表达式将查询写的更有效率

[1] [2] [3] [4] [5] [6] [7]

上一篇:比AcdSee功能还强大的图片处理、编辑软件,推荐下载!
下一篇:ASP上传漏洞防范
  • 网友评论:
  • 查看所有评论
  • 我要发表评论
您的网名:
留言主题:
你要发表的内容:

 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 发布软件 | 帮助中心 | 源码论坛

Copyright © 2005-2007 CodePub.Com  程序支持:木翼  滇ICP备05005971号