zoukankan      html  css  js  c++  java
  • Script to Create Benchmark Procs


    CREATE PROC usp_BenchMark
    AS
    /*DRIVER PROC TO RUN BENCHMARK PROCESS
      =======================================================*/
    BEGIN
        EXEC usp_StoreNewBenchMarkObjects
        EXEC usp_StoreBenchMarkTableDataVolumeHistory
        EXEC usp_StoreBenchMarkObjectIndexUsage
        EXEC usp_StoreTempDBHistory
        EXEC usp_StoreObjectTempDBHistory
        EXEC usp_StoreObjectBlockingHistory
        EXEC usp_StoreObjectCPUHistory
        EXEC usp_StoreObjectIOHistory
    END
    GO
    CREATE PROC usp_StoreNewBenchMarkObjects
    AS
    /*ADD ANY NEW DATABASE OBJECTS TO BENCHMARK OBJECT TABLES
      =======================================================*/
    INSERT INTO Benchmark_Object
    Select obj.object_id, obj.type, obj.name from sys.objects obj
    left outer join Benchmark_Object ben
    on obj.object_id = ben.object_Id
    where obj.type IN ('U', 'P', 'FN', 'V', 'TR', 'PC', 'AF', 'FS', 'FT', 'TA', 'TR', 'TF', 'X')
    and ben.object_id is null

    GO

    CREATE PROC usp_StoreBenchMarkTableDataVolumeHistory
    AS
    /*STORE TABLE ROW COUNTS FOR BENCHMARK TABLES
      =======================================================*/
    DECLARE @MYSQL NVARCHAR(2000)
    SET @MYSQL = N'INSERT INTO Benchmark_Table_DataVolumeHistory select Object_Id(''?''), getdate(), count(*) from ?';
    EXEC sp_msforeachtable @MYSQL

    GO

    CREATE PROC usp_StoreBenchMarkObjectIndexUsage
    AS
    /*STORE INDEX USAGE HISTORY COUNTS FOR BENCHMARK TABLES
      =======================================================*/
    INSERT into Benchmark_Object_IndexUsageHistory
    select    dmv.object_id
            ,sampledatetime=Getdate()
            ,index_id
            , user_seeks
            , user_scans
            , user_lookups  
    from sys.dm_db_index_usage_stats dmv
    inner join Benchmark_Table bt
    on dmv.object_id = bt.object_id


    GO
    CREATE PROC usp_StoreTempDBHistory
    AS
    /*STORE TEMPDB USAGE HISTORY AS SERVER LEVEL
      =======================================================*/
    INSERT INTO Benchmark_TempDBHistory
    SELECT getdate(),
        SUM(user_object_reserved_page_count) * 8 as user_objects_kb,
        SUM(internal_object_reserved_page_count) * 8 as internal_objects_kb,
        SUM(version_store_reserved_page_count) * 8 as version_store_kb,
        SUM(unallocated_extent_page_count) * 8 as freespace_kb
    FROM sys.dm_db_file_Space_Usage
    where database_id = 2

    GO
    CREATE PROC usp_StoreObjectTempDBHistory
    AS
    /*STORE TEMPDB USAGE HISTORY AT OBJECT LEVEL
      =======================================================*/
    INSERT INTO Benchmark_Object_TempDBHistory
    SELECT
        obj.objectid as [Object_Id],
        getdate() as SampleDateTime,
        sum(tmp.user_objects_alloc_page_count) AS user_objects_alloc_page_count,
        sum(tmp.user_objects_dealloc_page_count) AS user_objects_dealloc_page_count,
        sum(tmp.internal_objects_alloc_page_count) AS internal_objects_alloc_page_count,
        sum(tmp.internal_objects_dealloc_page_count) AS internal_objects_dealloc_page_count
      FROM sys.dm_db_task_space_usage AS tmp
        LEFT OUTER JOIN sys.dm_exec_requests AS req
        ON tmp.session_id = req.session_id
        OUTER APPLY sys.dm_exec_sql_text(req.sql_handle) AS obj
      WHERE tmp.session_id > 50
        AND obj.objectid is not null
    Group BY obj.ObjectId
    GO

    CREATE PROC usp_StoreObjectBlockingHistory
    AS
    /*STORE OBJECT BLOCKING HISTORY
      =======================================================*/
    BEGIN
        INSERT INTO Benchmark_Table_BlockingHistory
        SELECT s.object_id
         , SampleDateTime = getdate()
         , indexname=i.name, i.index_id
         , [block_pct]=cast (100.0 * row_lock_wait_count / (1 + row_lock_count) as numeric(15,2))
         , row_lock_wait_ms = row_lock_wait_in_ms
         , [avg_row_lock_waits_ms]=cast (1.0 * row_lock_wait_in_ms / (1 + row_lock_wait_count) as numeric(15,2))
        from sys.dm_db_index_operational_stats (db_id(), NULL, NULL, NULL) s
         ,sys.indexes i
        where objectproperty(s.object_id,'IsUserTable') = 1
        and i.object_id = s.object_id
        and i.index_id = s.index_id
        And row_lock_wait_count <> 0
    END


    GO

    ALTER PROC usp_StoreObjectCPUHistory
    /*STORE CPU USAGE HISTORY
      =======================================================*/
    AS
    BEGIN
        INSERT INTO Benchmark_Object_CPUHistory
        SELECT
            objectid as [Object_Id]
            , getdate() As SampleDateTime
            , total_cpu_time
            , total_execution_count
            , number_of_statements
        FROM (
        SELECT
            qs.sql_handle
            , sum(qs.total_worker_time) as total_cpu_time
            , sum(qs.execution_count) as total_execution_count
            , count(*) as  number_of_statements
        FROM  
            sys.dm_exec_query_stats qs
        GROUP BY qs.sql_handle ) dt
        Cross Apply sys.dm_exec_sql_text(dt.sql_handle) eqp
        WHERE ObjectId is not null
    END

    GO

    ALTER PROC usp_StoreObjectIOHistory
    /*STORE IO USAGE HISTORY
      =======================================================*/
    AS
    BEGIN
        INSERT INTO Benchmark_Object_IO_History
        Select ObjectId As [Object_ID], GetDate() as SampleDateTime
            , (total_logical_reads/Cast(execution_count as Decimal(38,16))) as avg_logical_reads
            , (total_logical_writes/Cast(execution_count as Decimal(38,16))) as avg_logical_writes
            , (total_physical_reads/Cast(execution_count as Decimal(38,16))) as avg_physical_reads
            , Execution_Count
        from (
        select  
              Sum(total_logical_reads) as total_logical_reads
            , Sum(total_logical_writes) as total_logical_writes
            , Sum(total_physical_reads) as total_physical_reads
            , Sum(execution_count) as execution_count
            , sh.objectid
        from sys.dm_exec_query_stats   
        Cross Apply sys.dm_exec_sql_text(sql_Handle) sh
        Where objectId is not null
        Group By objectid
        ) SubQry
    END

    GO

    CREATE PROC usp_CalcBenchmarkTableDataVolumeGrowth(
            @START_DATE datetime,
            @END_DATE datetime
        )
    AS
    BEGIN

    DECLARE         @START_DATE datetime,
            @END_DATE datetime

        SET @START_DATE = getdate()
        SET @END_DATE = getdate()

        IF @START_DATE = @END_DATE
            SET @END_DATE = Convert(varchar(10), DateAdd(day, 1, @END_DATE), 101)

        SELECT startdt.object_id, object_name(startdt.object_id) as [Object_Name], startdt.[RowCount] as Starting_Row_Count,
                enddt.[RowCount] as Ending_Row_Count,
                pct_Growth = case when startdt.[rowcount] = 0 then 0
                                else (enddt.[rowCount] - startdt.[rowCount])/Convert(Decimal(38, 16), startdt.[rowcount])
                                end
        FROM Benchmark_Table_DataVolumeHistory startdt
        INNER JOIN (
            Select object_id, min(SampleDateTime) as minSampleDateTime,
            max(SampleDateTime) As maxSampleDateTime
            FROM Benchmark_Table_DataVolumeHistory
            WHERE SampleDateTime >= Convert(varchar(10), Getdate(), 101)
            And SampleDateTime < @END_DATE
            GROUP BY object_Id
            ) sub
        ON startdt.object_id = sub.object_id
            and startdt.SampleDateTime = minSampleDateTime
        INNER JOIN BenchMark_Table_DataVolumeHistory enddt
        ON enddt.object_id = sub.object_id
            and enddt.SampleDateTime = maxSampleDateTime


        SELECT UseCaseDesc, startdt.object_id, object_name(startdt.object_id) as [Object_Name], startdt.[RowCount] as Starting_Row_Count,
                enddt.[RowCount] as Ending_Row_Count,
                pct_Growth = case when startdt.[rowcount] = 0 then 0
                                else (enddt.[rowCount] - startdt.[rowCount])/Convert(Decimal(38, 16), startdt.[rowcount])
                                end
        FROM Benchmark_Table_DataVolumeHistory startdt
        INNER JOIN (
            Select uc.UseCaseDesc, hist.object_id, min(SampleDateTime) as minSampleDateTime,
            max(SampleDateTime) As maxSampleDateTime
            FROM Benchmark_Table_DataVolumeHistory hist
            INNER JOIN Benchmark_useCase_Object_assn ua
            ON hist.object_id = ua.object_id
            inner join benchmark_usecase uc
            on ua.usecaseid = uc.usecaseid
            WHERE SampleDateTime >= Convert(varchar(10), Getdate(), 101)
            And SampleDateTime < @END_DATE
            GROUP BY hist.object_Id, usecasedesc
            ) sub
        ON startdt.object_id = sub.object_id
            and startdt.SampleDateTime = minSampleDateTime
        INNER JOIN BenchMark_Table_DataVolumeHistory enddt
        ON enddt.object_id = sub.object_id
            and enddt.SampleDateTime = maxSampleDateTime




    END

  • 相关阅读:
    渗透利器-kali工具 (第二章-4) 信息收集之目录扫描
    渗透利器-kali工具 (第二章-3) 信息收集之子域名扫描 -Sublist3
    渗透利器-kali工具 (第二章-2) 信息收集之端口扫描-NMAP
    渗透利器-kali工具 (第二章-1) 渗透测试流程以及信息收集总纲
    (4)top详解 (每周一个linux命令系列)
    (3)lscpu详解 (每周一个linux命令系列)
    (2)free详解 (每周一个linux命令系列)
    每周一个linux命令之---uptime详解
    使用python制作时间戳转换工具
    PSR规范0-4整理
  • 原文地址:https://www.cnblogs.com/shihao/p/2513544.html
Copyright © 2011-2022 走看看