zoukankan      html  css  js  c++  java
  • 统计Wait_Queue

    function funhelp()
    {
    $helpText=@"
    NAME:Collect_dm_os_wait_stats.ps1
    This script Collect Wait and Queue information from DMV sys.dm_os_wait_stats
    This is a hardcode script , you don't need to specify any parameter. Please modify 'computerList' if you want to add more computers..
    Make sure you have a Disk_database in the host where this script runs. And the two tables dm_os_wait_stats_xxx exist in the database.
    SYNTAX:
    Collect_dm_os_wait_stats.ps1
    "@
    Write
    -Host $helpText -ForegroundColor Green

    }


    function GetData([string]$servername,$tableName,$orderbyColumn)
    {
    #get statistics from target instance
     $sqlStatement = @"
    select top 20
           @@SERVERNAME
          ,[wait_type]
          ,[waiting_tasks_count]
          ,[wait_time_ms]
          ,[max_wait_time_ms]
          ,[signal_wait_time_ms]
    from sys.dm_os_wait_stats
    order by $orderbyColumn;
    "@
    $sqlStatement
    #DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR);

        
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
        
    $SqlConnection.ConnectionString = "Server=$servername;Initial Catalog=master;Trusted_Connection=True;"
        
    $SqlCmd =New-Object System.Data.SqlClient.SqlCommand
        
    $SqlCmd.Connection=$SqlConnection
        
    $SqlCmd.CommandText=$sqlStatement
        
    $da= New-Object System.Data.SqlClient.SqlDataAdapter
        
    $da.SelectCommand=$SqlCmd
        
    $ds=New-Object system.Data.DataSet
        
    $da.Fill($ds)


        
    #purge into database
        SaveToDisk $ds.Tables[0$tableName
        
    }

    function CleanWaitStats([string]$servername)
    {
     
    $sqlStatement = @"
    DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR)
    "@

        
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
        
    $SqlConnection.ConnectionString = "Server=$servername;Initial Catalog=master;Integrated Security=SSPI;"
        
    $SqlCmd =New-Object System.Data.SqlClient.SqlCommand 
        
    $SqlCmd.Connection=$SqlConnection
        
    $SqlCmd.CommandText=$sqlStatement

                    
        
    $SqlConnection.Open()
        
    $effectCount=$SqlCmd.ExecuteNonQuery()
        
    $SqlConnection.Close()
        
    }


    function SaveToDisk($table,$tableName)
    {
        
    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection 
        
    $SqlConnection.ConnectionString = "Server=.;Initial Catalog=disk_database;Trusted_Connection=True;"
        
        
        
    $sbc = New-Object System.Data.SqlClient.SqlBulkCopy($SqlConnection)
        
    $SqlConnection.Open()
        
    $sbc.DestinationTableName = $tableName
        
        
    $sbc.WriteToServer($table)
        
    "done"    
    }



    funhelp

    $computerList="db-back-read-05","db-back-read-06"

    foreach($computer in $computerList)
    {
        Write
    -Host "Collect data against $computer..."
        GetData 
    $computer "dm_os_wait_stats_waittime" "wait_time_ms desc"
        GetData 
    $computer "dm_os_wait_stats_taskcounter" "waiting_tasks_count desc"
        
        
    #clear
        CleanWaitStats $computer
    }

    #defination of dm_os_wait_stats_xxxx
    #
    CREATE TABLE [dbo].[dm_os_wait_stats_xxx](
    #
        [serverName] [nvarchar](50) ,
    #
        [wait_type] [nvarchar](60) NOT NULL,
    #
        [waiting_tasks_count] [bigint] NOT NULL,
    #
        [wait_time_ms] [bigint] NOT NULL,
    #
        [max_wait_time_ms] [bigint] NOT NULL,
    #
        [signal_wait_time_ms] [bigint] NOT NULL,
    #
        [createDate] datetime  not null default getdate(),
    #
        primary key (servername,wait_type,createDate)
    #
    ) ON [PRIMARY]
  • 相关阅读:
    paip.云计算以及分布式计算的区别
    paip.索引的种类以及实现attilax 总结
    paip.分布式应用系统java c#.net php的建设方案
    paip.提升性能--多核编程中的java .net php c++最佳实践 v2.0 cah
    paip.中文 分词 ---paoding 3.1 的使用
    paip.2013年技术趋势以及热点 v2.0 cae
    paip.为什么使用多线程的原因.
    paip.提升性能--多核cpu中的java/.net/php/c++编程
    paip.重装系统需要备份的资料总结..v2.0 cad
    paip.禁用IKAnalyzer 的默认词库.仅仅使用自定义词库.
  • 原文地址:https://www.cnblogs.com/stswordman/p/1997859.html
Copyright © 2011-2022 走看看