仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 769|回复: 7
打印 上一主题 下一主题

[学习教程] SqlServer运转时占用高CPU成绩查询

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
#
发表于 2015-1-16 14:07:10 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
BDB源自BerkeleyDB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性常常在论坛看到问高CPU的成绩,复杂的总结一下。
1,起首你要确认,高CPU是否是是SQLSERVER历程引发的仍是其余历程引发的,这个很简单,间接看义务办理器。
2,假如从义务办理器看出高CPU的确是用SQLSERVER引发的。
3,假如是SQLSERVER引发的。

3.1SQLSERVER的一个对照BAD的实行企图引发的,好比说短少需要的INDEX,引发了hashjoin甚么的。这个也分红2种:
1,形成高CPU的语句已实行停止,这个时分能够用上面的语句来反省。
select
highest_cpu_queries.plan_handle,
highest_cpu_queries.total_worker_time,
q.dbid,
q.objectid,
q.number,
q.encrypted,
q.[text]
from
(selecttop50
qs.plan_handle,
qs.total_worker_time
from
sys.dm_exec_query_statsqs
orderbyqs.total_worker_timedesc)ashighest_cpu_queries
crossapplysys.dm_exec_sql_text(plan_handle)asq
orderbyhighest_cpu_queries.total_worker_timedesc

注释一下sys.dm_exec_query_stats:
sys.dm_exec_query_stats前往缓存查询企图的聚合功能统计信息。每一个查询企图在该视图中对应一行,而且行的保存期与企图自己相干联。在从缓存删除企图时,也将从该视图中删除对应行。
可检察匡助文档:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/eb7b58b8-3508-4114-97c2-d877bcb12964.htm

3.1.2,形成高CPU的语句正在运转,这个时分能够用上面的语句来反省。
SELECTst.text,qp.query_plan,rq.*
FROMsys.dm_exec_requestsRQCROSSAPPLYsys.dm_exec_sql_text(rq.sql_handle)asst
CROSSAPPLYsys.dm_exec_query_plan(rq.plan_handle)asqporderbyRQ.CPU_timedesc

3.2开启了SQLprofiler.
经由过程3.1.2能够看到sp_trace_getdata这个SP在运转。

3.3过分的编译跟重编译。
能够经由过程上面的SQL来查
selecttop25
sql_text.text,
sql_handle,
plan_generation_num,
execution_count,
dbid,
objectid
from
sys.dm_exec_query_statsa
crossapplysys.dm_exec_sql_text(sql_handle)assql_text
where
plan_generation_num>1
orderbyplan_generation_numdesc

3.4某个体系历程酿成的,好比说Ghostcleanup,Lazywriter等。能够经由过程select*fromsys.sysprocesseswherespid<51来查。

形成详细的引发高CPU究竟是甚么引发的,然后有的放矢。由MySQL用来存储数据的文件格式以已经被广泛地测试过,但是总是有外部情况可以导致数据库表被破坏:
乐观 该用户已被删除
7#
发表于 2015-3-24 02:10:23 | 只看该作者
比如日志传送、比如集群。。。
若相依 该用户已被删除
6#
发表于 2015-3-17 07:10:06 | 只看该作者
你可以简单地认为适合的就是好,不适合就是不好。
小妖女 该用户已被删除
5#
发表于 2015-3-10 12:28:19 | 只看该作者
varchar(max)\\\\nvarchar(max)类型的引入大大的提高了编程的效率,可以使用字符串函数对CLOB类型进行操作,这是一个亮点。
老尸 该用户已被删除
地板
发表于 2015-3-1 01:48:20 | 只看该作者
where子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
冷月葬花魂 该用户已被删除
板凳
发表于 2015-2-10 06:23:46 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
深爱那片海 该用户已被删除
沙发
发表于 2015-1-26 13:13:34 | 只看该作者
语句级快照和事务级快照终于为SQLServer的并发性能带来了突破。个人感觉语句级快照大家应该应用。事务级快照,如果是高并发系统还要慎用。如果一个用户总是被提示修改不成功要求重试时,会杀人的!
谁可相欹 该用户已被删除
楼主
发表于 2015-1-18 11:58:14 | 只看该作者
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 04:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表