惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MongoDB | Blog
MongoDB | Blog
H
Help Net Security
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The GitHub Blog
The GitHub Blog
V
V2EX
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
A
About on SuperTechFans
博客园_首页
L
LangChain Blog
量子位
雷峰网
雷峰网
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Jina AI
Jina AI
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
博客园 - 聂微东
Microsoft Azure Blog
Microsoft Azure Blog
M
MIT News - Artificial intelligence
N
Netflix TechBlog - Medium

博客园 - ideas

从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值。 移除google搜索结果中烦人的URL跟踪跳转 关于分页存储过程的优化【让数据库按我们的意思执行查询计划】 DiscuzNT首页版块提取优化 中国娱乐网招聘asp.net软件工程师 【转】Iframe高度自适应(兼容IE/Firefox、同域/跨域) 【转】MAQETTA: 基于HTML5的开源可视化界面设计工具 高效能人士的七个习惯 有《基于行块分布函数的通用网页正文抽取》想到的 MongoDB 学习笔记—MapReduce MongoDB系列文章推荐 【转】linux screen 命令详解 - [linux] 关于添加索引视图后的数据存储区别 索引视图 添加计算列,并创建索引 浏览器的加载与页面性能优化【转】 IO瓶颈 内存瓶颈 Windows Live Writer 插件 Source Code Plug-in
几个有用的DMV查询
ideas · 2011-04-18 · via 博客园 - ideas

找出是否存在一个或多个等待获取 tempdb 中页面锁存器的线程

SELECT session_id,wait_type, wait_duration_ms, resource_description
FROM sys.dm_os_waiting_tasks
WHERE wait_type LIKE 'PAGE%LATCH_%' AND resource_description LIKE '2:%'

下面DMV查询来确认 tempdb 中当前引发最多分配和回收操作的执行查询

SELECT TOP 10
      t1.session_id, t1.request_id, t1.task_alloc, t1.task_dealloc,t2.plan_handle,
      (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
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 t2.session_id > 50
ORDER BY t1.task_alloc DESC

下面DMV查询找出当前执行事务或当前执行事务等待的锁

SELECT request_session_id AS spid, resource_type AS rt,resource_database_id AS rdb,
      (CASE resource_type
            WHEN 'OBJECT' THENobject_name(resource_associated_entity_id)
            WHEN 'DATABASE' THEN ' '
            ELSE (SELECT object_name(object_id) FROM sys.partitionsWHERE hobt_id=resource_associated_entity_id)
      END) AS objname,
      resource_description as rd,
      request_mode as rm,
      request_status AS rs
FROM sys.dm_tran_locks

下面查询得到正在被阻塞的查询

--request_mode表示查询要请求的锁,resource_description中的mode=x表示该查询被阻塞的锁
SELECT
      t1.resource_type,
      'database' = DB_NAME(resource_database_id),
      'blk object' = t1.resource_associated_entity_id,
      t1.request_mode,
      t1.request_session_id,
      t2.blocking_session_id,
      t2.wait_duration_ms,
      (SELECT SUBSTRING(text, t3.statement_start_offset/2+1,
            (CASE WHEN t3.statement_end_offset = -1 THENLEN(CONVERT(nvarchar(max), text)) * 2
            ELSE t3.statement_end_offset END -t3.statement_end_offset)/2)
      FROM sys.dm_exec_sql_text(sql_handle)) AS query_text,
      t2.resource_description
FROM sys.dm_tran_locks AS t1, sys.dm_os_waiting_tasks AS t2,sys.dm_exec_requests AS t3
WHERE t1.lock_owner_address = t2.resource_address AND
      t1.request_request_id = t3.request_id AND
      t2.session_id = t3.session_id

下面查询返回表的索引被使用的情况

SELECT index_id, range_scan_count, row_lock_count, page_lock_count
FROM sys.dm_db_index_operational_stats(DB_ID('<db name>'),OBJECT_ID('table name'), NULL, NULL)