Tempdb--monitoring and troubleshooting
TempDB用来存放临时表、全局临时表、表变量以及排序或HASH等操作引发的中间结果集
TempDB在每次实例重启时重新创建,TempDB数据库文件的初始化大小取决于Model数据库的文件大小或显示ALTER语句设置的TempDB的文件文件大小
在每个数据库文件中,分配页(allocation page)ID:
PFS:1
GAM:2
SGAM:3
一个PFS页能覆盖8088个数据页,一个GAM或SGAM页能覆盖511232个数据页,当一个文件超过响应数据页数,SQL SERVER 使用分配页(allocation page)链来覆盖。
---------------------------------------------------------------------------------
由于临时表和表变量创建和销毁时,需要锁住分配页来为临时表或表变量分配数据页,当创建和销毁的过于频繁时,会造成ALLOCATION BOTTLENECK
查看是否是Allocation BottleNeck:
SELECT *
FROM sys.dm_os_waiting_tasks
WHERE wait_type LIKE 'PAGE%LATCH_%'
AND resource_description LIKE '2:%'
解决ALLOCATION BOTTLENECK的方法:
1. 建立与CORE或CPU相同个数的物理文件数
2. 使用TF1118(SQL SERVER 2005后),为新对象分配数据页时分配到新数据区而不使用混合区,减少SGAM的争用
---------------------------------------------------------------------------------
由于临时表和表变量创建和销毁时,需要对相关系统表插入或删除该临时表的元数据信息,当创建和销毁的过于频繁时,便会造成DDL BottleNeck
查看DDL BottleNeck:
SELECT *
FROM sys.dm_os_waiting_tasks
WHERE wait_type LIKE 'PAGE%LATCH_%'
AND resource_description LIKE '2:%'
查看DDL BottleNeck和查看Allocation BottleNeck的脚本一样,但是两者锁定的资源不一样
或使用性能计数器来判断:
SELECT * FROM sys.dm_os_performance_counters
WHERE counter_name LIKE '%temp%table%'
'Active Temp Tables':当前使用中的临时表
'Temp Tables Creation Rate':每秒创建的临时表或表变量的个数
'Temp Tables For Destruction':等待系统进程清理的表变量或临时表的个数
当'Temp Tables Creation Rate'和'Temp Tables For Destruction'值较高时,则可能存在DDL BottleNeck
解决方案:
1. 将频繁创建和删除的临时表或表变量改为用户表
---------------------------------------------------------------------------------
在TempDB上,由于某些不合理的执行计划和SQL消耗大量的空间,造成Space BottleNeck
查看Space BottleNeck:
-- This DMV query shows currently executing tasks and
-- tempdb space usage
-- Once you have isolated the task(s) that are generating lots
-- of internal object allocations,
-- you can even find out which TSQL statement and its query plan
-- for detailed analysis
SELECT TOP 10
t1.session_id,
t1.request_id,
t1.task_alloc,
t1.task_dealloc,
(
SELECT SUBSTRING(TEXT, t2.statement_start_offset/2 + 1,
(CASE WHEN statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX),TEXT)) * 2
ELSE statement_end_offset
END - t2.statement_start_offset)/2)
FROM sys.dm_exec_sql_text(sql_handle)
) AS query_text,
(SELECT query_plan FROM sys.dm_exec_query_plan(t2.plan_handle)) AS query_plan
FROM
(SELECT session_id, request_id,
SUM(internal_objects_alloc_page_count + user_objects_alloc_page_count) AS task_alloc,
SUM (internal_objects_dealloc_page_count + user_objects_dealloc_page_count) AS task_dealloc
FROM sys.dm_db_task_space_usage
GROUP BY session_id, request_id
) AS t1,
sys.dm_exec_requests AS t2
WHERE t1.session_id = t2.session_id AND
(t1.request_id = t2.request_id) AND
t1.session_id > 50
ORDER BY t1.task_alloc DESC
解决方案:
1. 找出耗空间较大的SQL并优化
---------------------------------------------------------------------------------
参考:
Tempdb--monitoring and troubleshooting的更多相关文章
- SQL Server 2008性能故障排查(四)——TempDB
原文:SQL Server 2008性能故障排查(四)--TempDB 接着上一章:I/O TempDB: TempDB是一个全局数据库,存储内部和用户对象还有零食表.对象.在SQLServer操作过 ...
- 【译】The Accidental DBA:Troubleshooting Performance
最近重新翻看The Accidental DBA,将Troubleshooting Performance部分稍作整理,方便以后查阅.此篇是Part 2Part 1:The Accidental DB ...
- Announcing the Operate Preview Release: Monitoring and Managing Cross-Microservice Workflows
转自:https://zeebe.io/blog/2019/04/announcing-operate-visibility-and-problem-solving/ Written by Mik ...
- SQL Server 2008性能故障排查(一)——概论
原文:SQL Server 2008性能故障排查(一)--概论 备注:本人花了大量下班时间翻译,绝无抄袭,允许转载,但请注明出处.由于篇幅长,无法一篇博文全部说完,同时也没那么快全部翻译完,所以按章节 ...
- Managing a node remotely by using the netapp SP
Managing a node remotely by using the Service Processor The Service Processor (SP) is a remote manag ...
- Monitor and diagnose performance in Java SE 6--转载
Java SE 6 provides an in-depth focus on performance, offering expanded tools for managing and monito ...
- Java Performance Optimization Tools and Techniques for Turbocharged Apps--reference
Java Performance Optimization by: Pierre-Hugues Charbonneau reference:http://refcardz.dzone.com/refc ...
- (转)db2top详解
原文:https://blog.csdn.net/lyjiau/article/details/47804001 https://www.ibm.com/support/knowledgecenter ...
- ZooKeeper Administrator's Guide A Guide to Deployment and Administration(吃别人嚼过的馍没意思,直接看官网资料)
Deployment System Requirements Supported Platforms Required Software Clustered (Multi-Server) Setup ...
- CNCF CloudNative Landscape
cncf landscape CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database ...
随机推荐
- python渗透测试工具包
网络 Scapy, Scapy3k: 发送,嗅探,分析和伪造网络数据包.可用作交互式包处理程序或单独作为一个库.pypcap, Pcapy, pylibpcap: 几个不同 libpcap 捆绑的py ...
- Docker系列02: 容器生命周期管理 镜像&容器
A) Docker信息1. 查看docker运行状态 systemctl status docker docker.service - Docker Application Container Eng ...
- js实现的快速排序
快速排序是一种平均性能非常优秀的排序算法,在很多场合都会应用到他. 了解快速排序于对开放高效率的软件有很重要的作用. 但是有不少的书本讲得并不是很清楚,而且不同的教材的实现方式也不尽相同, 我这里将最 ...
- blktrace btt结果分析
对于btt的结果分析十分的困难,我和同事花了很多的时间在网上查找btt输出的每一项参数的意义,试图更好的分析bio的统计信息,但网上文章一大抄,翻来覆去就是那几篇文章. 本文中内容参考了以下网址: 1 ...
- Rhythmk 学习 Hibernate 08 - Hibernate annotation 关联关系注解
1.一对一 (One to One) 共三种情况: 1.1 主键共享 1.2 外键共享 1.3 中间表关联 1.1 code: @Entity public class arti ...
- IIS 禁止访问:在 Web 服务器上已拒绝目录列表
webconfig <configuration> <system.webServer> <directoryBrowse enabled="true" ...
- 实现HBase增量入库(HBase删除自定义时间戳行数据)
目录 1. 背景描述 2. 问题描述 3. 解决方案 1. 背景描述 目前在做音乐推荐项目,前期做排序模型优化,任务是使用模型对用户的历史音乐进行排序,有6800多万个用户,约40G的用户数据,使用H ...
- pymysql.err.IntegrityError: (1062, "Duplicate entry 'roxml-ROXML' for key 'PRIMARY'")
在<Python数据挖掘-概念.方法与实践>一书的第3章实体匹配中,如果一路按照作者的代码及SQL语句进行配置运行的话,会出现如题目所示的错误.根据python脚本的执行错误提示显示,错误 ...
- 非root用户使用1024以下端口
如果你有一个最新的内核,确实有可能使用它作为非root用户启动服务,但绑定低端口.最简单有效的办法是: #setcap 'cap_net_bind_service=+ep' /path/to/pr ...
- unity shader tags
"IgnoreProjector",值为"true"时,表示不接受Projector组件的投影. "ForceNoShadowCasting" ...