加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

sql-server – 如何找出是谁/什么是锤击SQL Server TempDB

发布时间:2021-01-12 16:35:49 所属栏目:编程 来源:网络整理
导读:我正在行使SQL Server 2012 Enterprise.处事器设置了一个可用性组. 实例上有差异器材的几个数据库.这些器材都属于一路,因此推出了.在推出后,我熟悉到TempDB的perfmon计数器Transaction / sec有所上升.在推出之前,计数器的均匀值是30,此刻约莫是300. 在已往,我

我正在行使SQL Server 2012 Enterprise.处事器设置了一个可用性组.
实例上有差异器材的几个数据库.这些器材都属于一路,因此推出了.在推出后,我熟悉到TempDB的perfmon计数器Transaction / sec有所上升.在推出之前,计数器的均匀值是30,此刻约莫是300.
在已往,我已经碰着了相同的题目,并发明一个器材的新版本实现了一向被挪用的游标.但这次这好像不是题目.我行使SQL说明器跟踪游标变乱但没有找到任何风趣的对象.我还实行行使tempDB自己的过滤器举办跟踪,但看起来没有任何盼望.

有谁知道如安在TempDB中找出造成这些高买卖营业率的人可能是什么?

我不确定这也许是一本机能题目,但我想知道为什么这个数字改变了那么多.

办理要领

我已往曾行使过这个脚原来查察哪个spid在tempdb中有许多页面:
;WITH s AS
(
    SELECT 
        s.session_id,[pages] = SUM(s.user_objects_alloc_page_count 
          + s.internal_objects_alloc_page_count) 
    FROM sys.dm_db_session_space_usage AS s
    GROUP BY s.session_id
    HAVING SUM(s.user_objects_alloc_page_count 
      + s.internal_objects_alloc_page_count) > 0
)
SELECT s.session_id,s.[pages],t.[text],[statement] = COALESCE(NULLIF(
    SUBSTRING(
        t.[text],r.statement_start_offset / 2,CASE WHEN r.statement_end_offset < r.statement_start_offset 
        THEN 0 
        ELSE( r.statement_end_offset - r.statement_start_offset ) / 2 END
      ),''
    ),t.[text])
FROM s
LEFT OUTER JOIN 
sys.dm_exec_requests AS r
ON s.session_id = r.session_id
OUTER APPLY sys.dm_exec_sql_text(r.plan_handle) AS t
ORDER BY s.[pages] DESC;

(不记得我从那边获得它,对不起).这不会给你带来祸首罪魁(由于他也许一遍又一各处写同样的页面).

行使此剧本可觉得您提供执行大量IO操纵的职员:

SELECT TOP 10 SUBSTRING(qt.TEXT,(qs.statement_start_offset/2)+1,((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.TEXT)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1),qs.execution_count,qs.total_logical_reads,qs.last_logical_reads,qs.total_logical_writes,qs.last_logical_writes,qs.total_worker_time,qs.last_worker_time,qs.total_elapsed_time/1000000 total_elapsed_time_in_S,qs.last_elapsed_time/1000000 last_elapsed_time_in_S,qs.last_execution_time,qp.query_plan
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY qs.total_logical_reads DESC -- logical reads
-- ORDER BY qs.total_logical_writes DESC -- logical writes
-- ORDER BY qs.total_worker_time DESC -- CPU time

(Thanks Dave!)

团结这两个应该给你一个好主意.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读