zoukankan      html  css  js  c++  java
  • DMVMemory and Lock

    --查看连接当前数据库的SPID所加的锁
    
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
    SELECT DB_NAME(resource_database_id) AS DatabaseName 
    , request_session_id 
    , resource_type 
    , CASE 
    WHEN resource_type = 'OBJECT' 
    THEN OBJECT_NAME(resource_associated_entity_id) 
    WHEN resource_type IN ('KEY', 'PAGE', 'RID') 
    THEN (SELECT OBJECT_NAME(OBJECT_ID) 
    FROM sys.partitions p 
    WHERE p.hobt_id = l.resource_associated_entity_id) 
    END AS resource_type_name 
    , request_status 
    , request_mode 
    FROM sys.dm_tran_locks l 
    WHERE request_session_id !=@@spid 
    ORDER BY request_session_id 
    --查看没关闭事务的空闲Session
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
    SELECT es.session_id
    , es.login_name
    , es.host_name, est.text 
    , cn.last_read
    , cn.last_write, es.program_name 
    FROM sys.dm_exec_sessions es 
    INNER JOIN sys.dm_tran_session_transactions st 
    ON es.session_id = st.session_id 
    INNER JOIN sys.dm_exec_connections cn 
    ON es.session_id = cn.session_id 
    CROSS APPLY sys.dm_exec_sql_text(cn.most_recent_sql_handle) est 
    LEFT OUTER JOIN sys.dm_exec_requests er                     
    ON st.session_id = er.session_id 
    AND er.session_id IS NULL  
    --查看被阻塞的语句和它们的等待时间
    
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
    SELECT 
    Waits.wait_duration_ms / 1000 AS WaitInSeconds 
    , Blocking.session_id as BlockingSessionId 
    , DB_NAME(Blocked.database_id) AS DatabaseName 
    , Sess.login_name AS BlockingUser 
    , Sess.host_name AS BlockingLocation 
    , BlockingSQL.text AS BlockingSQL 
    , Blocked.session_id AS BlockedSessionId 
    , BlockedSess.login_name AS BlockedUser 
    , BlockedSess.host_name AS BlockedLocation 
    , BlockedSQL.text AS BlockedSQL 
    , SUBSTRING (BlockedSQL.text, (BlockedReq.statement_start_offset/2) + 1, 
    ((CASE WHEN BlockedReq.statement_end_offset = -1 
    THEN LEN(CONVERT(NVARCHAR(MAX), BlockedSQL.text)) * 2 
    ELSE BlockedReq.statement_end_offset 
    END - BlockedReq.statement_start_offset)/2) + 1) 
    AS [Blocked Individual Query] 
    , Waits.wait_type 
    FROM sys.dm_exec_connections AS Blocking                          
    INNER JOIN sys.dm_exec_requests AS Blocked 
    ON Blocking.session_id = Blocked.blocking_session_id 
    INNER JOIN sys.dm_exec_sessions Sess 
    ON Blocking.session_id = sess.session_id  
    INNER JOIN sys.dm_tran_session_transactions st 
    ON Blocking.session_id = st.session_id 
    LEFT OUTER JOIN sys.dm_exec_requests er 
    ON st.session_id = er.session_id 
    AND er.session_id IS NULL 
    INNER JOIN sys.dm_os_waiting_tasks AS Waits 
    ON Blocked.session_id = Waits.session_id 
    CROSS APPLY sys.dm_exec_sql_text(Blocking.most_recent_sql_handle) AS BlockingSQL 
    INNER JOIN sys.dm_exec_requests AS BlockedReq                     
    ON Waits.session_id = BlockedReq.session_id 
    INNER JOIN sys.dm_exec_sessions AS BlockedSess 
    ON Waits.session_id = BlockedSess.session_id 
    CROSS APPLY sys.dm_exec_sql_text(Blocked.sql_handle) AS BlockedSQL 
    ORDER BY WaitInSeconds 
    --查看超过30秒等待的查询
    
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
    SELECT 
    Waits.wait_duration_ms / 1000 AS WaitInSeconds 
    , Blocking.session_id as BlockingSessionId 
    , Sess.login_name AS BlockingUser 
    , Sess.host_name AS BlockingLocation 
    , BlockingSQL.text AS BlockingSQL 
    , Blocked.session_id AS BlockedSessionId 
    , BlockedSess.login_name AS BlockedUser 
    , BlockedSess.host_name AS BlockedLocation 
    , BlockedSQL.text AS BlockedSQL 
    , DB_NAME(Blocked.database_id) AS DatabaseName 
    FROM sys.dm_exec_connections AS Blocking                         
    INNER JOIN sys.dm_exec_requests AS Blocked 
    ON Blocking.session_id = Blocked.blocking_session_id 
    INNER JOIN sys.dm_exec_sessions Sess 
    ON Blocking.session_id = sess.session_id  
    INNER JOIN sys.dm_tran_session_transactions st 
    ON Blocking.session_id = st.session_id 
    LEFT OUTER JOIN sys.dm_exec_requests er 
    ON st.session_id = er.session_id 
    AND er.session_id IS NULL 
    INNER JOIN sys.dm_os_waiting_tasks AS Waits 
    ON Blocked.session_id = Waits.session_id 
    CROSS APPLY sys.dm_exec_sql_text(Blocking.most_recent_sql_handle) AS BlockingSQL 
    INNER JOIN sys.dm_exec_requests AS BlockedReq                    
    ON Waits.session_id = BlockedReq.session_id 
    INNER JOIN sys.dm_exec_sessions AS BlockedSess 
    ON Waits.session_id = BlockedSess.session_id 
    CROSS APPLY sys.dm_exec_sql_text(Blocked.sql_handle) AS BlockedSQL 
    WHERE Waits.wait_duration_ms > 30000 
    ORDER BY WaitInSeconds
    --buffer中缓存每个数据库所占的buffer
    
    SET TRAN ISOLATION LEVEL READ UNCOMMITTED 
    SELECT ISNULL(DB_NAME(database_id), 'ResourceDb') AS DatabaseName 
    , CAST(COUNT(row_count) * 8.0 / (1024.0) AS DECIMAL(28,2)) AS [Size (MB)] 
    FROM sys.dm_os_buffer_descriptors 
    GROUP BY database_id 
    ORDER BY DatabaseName
    --当前数据库中每个表所占缓存的大小和页数
    
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
    SELECT  OBJECT_NAME(p.[object_id]) AS [TableName] 
    , (COUNT(*) * 8) / 1024   AS [Buffer size(MB)] 
    , ISNULL(i.name, '-- HEAP --') AS ObjectName 
    ,  COUNT(*) AS NumberOf8KPages 
    FROM sys.allocation_units AS a 
    INNER JOIN sys.dm_os_buffer_descriptors AS b 
    ON a.allocation_unit_id = b.allocation_unit_id 
    INNER JOIN sys.partitions AS p 
    INNER JOIN sys.indexes i 
    ON p.index_id = i.index_id 
    AND p.[object_id] = i.[object_id] 
    ON a.container_id = p.hobt_id 
    WHERE b.database_id = DB_ID() 
    AND p.[object_id] > 100 
    GROUP BY p.[object_id], i.name 
    ORDER BY NumberOf8KPages DESC
    --数据库级别等待的IO
    --IO stall:Total time,that users waited for I/O to be completed on the file.
    
    SET TRAN ISOLATION LEVEL READ UNCOMMITTED 
    SELECT DB_NAME(database_id) AS [DatabaseName] 
    , SUM(CAST(io_stall / 1000.0 AS DECIMAL(20,2))) AS [IO stall (secs)] 
    , SUM(CAST(num_of_bytes_read / 1024.0 / 1024.0 AS DECIMAL(20,2))) AS [IO read (MB)] 
    , SUM(CAST(num_of_bytes_written / 1024.0 / 1024.0  AS DECIMAL(20,2))) AS [IO written (MB) 
    , SUM(CAST((num_of_bytes_read + num_of_bytes_written) / 1024.0 / 1024.0 AS DECIMAL(20,2))) AS [TotalIO (MB)]
    FROM sys.dm_io_virtual_file_stats(NULL, NULL) 
    GROUP BY database_id 
    ORDER BY [IO stall (secs)] DESC
    --按文件查看IO情况
    
    SET TRAN ISOLATION LEVEL READ UNCOMMITTED 
    SELECT DB_NAME(database_id) AS [DatabaseName] 
    , file_id 
    , SUM(CAST(io_stall / 1000.0 AS DECIMAL(20,2))) AS [IO stall (secs)] 
    , SUM(CAST(num_of_bytes_read / 1024.0 / 1024.0 AS DECIMAL(20,2))) AS [IO read (MB)] 
    , SUM(CAST(num_of_bytes_written / 1024.0 / 1024.0  AS DECIMAL(20,2))) AS [IO written (MB)] 
    , SUM(CAST((num_of_bytes_read + num_of_bytes_written) / 1024.0 / 1024.0 AS DECIMAL(20,2))) AS [TotalIO (MB)] 
    FROM sys.dm_io_virtual_file_stats(NULL, NULL) 
    GROUP BY database_id, file_id 
    ORDER BY [IO stall (secs)] DESC


    摘抄自:http://www.cnblogs.com/CareySon/archive/2012/05/17/2506223.html

  • 相关阅读:
    Bubble Sort (5775)
    Dertouzos (5750)
    codeforces 360 E
    codeforces 360 D
    codeforces 360 C
    Mike and Cellphone
    训练2——B
    训练1——A
    符号三角形
    Sudoku Killer
  • 原文地址:https://www.cnblogs.com/TeyGao/p/2737482.html
Copyright © 2011-2022 走看看