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并优化

---------------------------------------------------------------------------------

参考:

http://blogs.msdn.com/b/sqlserverstorageengine/archive/2009/01/12/tempdb-monitoring-and-troubleshooting-out-of-space.aspx

Tempdb--monitoring and troubleshooting的更多相关文章

  1. SQL Server 2008性能故障排查(四)——TempDB

    原文:SQL Server 2008性能故障排查(四)--TempDB 接着上一章:I/O TempDB: TempDB是一个全局数据库,存储内部和用户对象还有零食表.对象.在SQLServer操作过 ...

  2. 【译】The Accidental DBA:Troubleshooting Performance

    最近重新翻看The Accidental DBA,将Troubleshooting Performance部分稍作整理,方便以后查阅.此篇是Part 2Part 1:The Accidental DB ...

  3. 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 ...

  4. SQL Server 2008性能故障排查(一)——概论

    原文:SQL Server 2008性能故障排查(一)--概论 备注:本人花了大量下班时间翻译,绝无抄袭,允许转载,但请注明出处.由于篇幅长,无法一篇博文全部说完,同时也没那么快全部翻译完,所以按章节 ...

  5. 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 ...

  6. 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 ...

  7. Java Performance Optimization Tools and Techniques for Turbocharged Apps--reference

    Java Performance Optimization by: Pierre-Hugues Charbonneau reference:http://refcardz.dzone.com/refc ...

  8. (转)db2top详解

    原文:https://blog.csdn.net/lyjiau/article/details/47804001 https://www.ibm.com/support/knowledgecenter ...

  9. ZooKeeper Administrator's Guide A Guide to Deployment and Administration(吃别人嚼过的馍没意思,直接看官网资料)

    Deployment System Requirements Supported Platforms Required Software Clustered (Multi-Server) Setup ...

  10. CNCF CloudNative Landscape

    cncf landscape CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database ...

随机推荐

  1. 集群(heartbeat)搭建

    HA 即(high available cluster)高可用集群,又称双机热备,保证关键性业务的不间断提供服务. 如:两台机器A和B,正常情况A提供服务,B待命闲置:一但A宕机或服务宕掉,自动切换至 ...

  2. ElasticSearch之CURL操作

    CURL的操作    curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求.简单的认为是可以在命令行下面访问url的一个工具.在centos ...

  3. Codeforces Round #456 B题

    一.题意 给你一个n和一个k,让你从[1, n]区间内选k个数,这k个数异或和最大. 二.思路 我一开始看到这种题,不自觉地就想到,莫非又要搞很复杂的线段树.主席树?貌似还有些难搞啊.然而事实是:Co ...

  4. javascript如何判断手机端的浏览器是否支持触碰功能

    if(document.hasOwnProperty("ontouchstart")) alert("浏览器支持触屏"); else alert("浏 ...

  5. Linux TCP/IP 连接查看和问题解决

    netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n  上面的 命令可以帮助分析哪种Tcp状态数量异常     netstat -nat|gr ...

  6. docker-compose搭建单机多节点es + kibana

    docker-compose.yml配置如下: version: '2.2' services: elasticsearch: image: docker.elastic.co/elasticsear ...

  7. Go structs、slices、maps

    [Go structs.slices.maps] 1.定义时*在变量名后面,使用时*在变量名前面. 2.定义struct,type在前,struct关键字在后. 3.指针可以指定struct. 4.A ...

  8. JQuery常用函数及功能

    JQuery常用函数及功能小结 来源:http://blog.csdn.net/screensky/article/details/7831000 1.文档加载完成执行函数 $(document).r ...

  9. strip命令

    去掉文件里调试和符号信息,文件大小变小,一般在发布的时候使用. 主要作用于可执行文件,动态库,目标文件等. 可参考:http://blog.csdn.net/stpeace/article/detai ...

  10. BaseSEOPage统一设置网站SEO

    代码: public class BaseSeoPage : System.Web.UI.Page { protected override void OnPreLoad(EventArgs e) { ...