您的位置:威尼斯官方网站 > 威尼斯官方网站登录 > 消除I/O花费后CPU耗费时间也减小

消除I/O花费后CPU耗费时间也减小

发布时间:2019-08-24 17:58编辑:威尼斯官方网站登录浏览(55)

    一. 概述

      上次在介绍质量调优中讲到了I/O的付出查看及保卫安全,此次介绍CPU的开辟及保卫安全, 在调优方面是能够从八个维度去发掘难题如I/O,CPU,  内部存款和储蓄器,锁等,不管从哪个维度去消除,都能到达调优的成效,因为sql server系统作为贰个全部性,它都是环环相扣相连的,比如:化解了sql语句中I/O费用比较多的主题材料,那对应的CPU开销也会回降,反之消除了CPU开销最多的,这对应I/O费用也会减小。化解I/O开支后CPU耗时也回降,是因为CPU下的Worker线程要求扫描I/O页数就少了,出现的能源锁的围堵也减小了,具体可仿效cpu的原理。

      下面sql语句的dmv:sys.dm_exec_query_stats和sys.dm_exec_sql_text 已经在上篇”sql server 质量调优 I/O费用剖析“中有讲到。

    --查询编译以来 cpu耗时总量最多的前50条(Total_woker_time)
    SELECT TOP 50
        total_worker_time/1000 AS [总消耗CPU 时间(ms)],
        execution_count [运行次数],
        qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
        last_execution_time AS [最后一次执行时间],
        max_worker_time /1000 AS [最大执行时间(ms)],
        SUBSTRING(qt.text,qs.statement_start_offset/2 1, 
            (CASE WHEN qs.statement_end_offset = -1 
            THEN DATALENGTH(qt.text) 
            ELSE qs.statement_end_offset END -qs.statement_start_offset)/2   1) 
        AS [使用CPU的语法], qt.text [完整语法],
        qt.dbid, dbname=db_name(qt.dbid),
        qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
    FROM sys.dm_exec_query_stats qs WITH(nolock)
    CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
    WHERE execution_count>1
    ORDER BY  total_worker_time DESC
    

    询问如下图所示,呈现CPU耗费时间总的数量最多的前50条

    图片 1

    在排名第38条,拿出耗费时间的sql脚本来剖析,发掘未走索引。如下图

    图片 2

    SELECT [PO_NO],[Qty] FROM [ORD_PurchaseLine] WITH(NOLOCK) WHERE ([PO_NO] IN (' ')) 
    

    图片 3

    二. 维护注意点

      1.  在生养数据库下,CPU耗费时间查询,并不限制只排查总耗时前50条,能够是前100~200条。具体看sql脚本未有没优化的急需,并非各类表的查询都必得走索引。如:有的表不走索引时并不会倍感很耗费时间平均I/0次数少,表中已建的目录已有四个,增删改也频频,还也可能有索引占用空间,这时要求权衡。 

    -- 快速查看索引数量
    sp_help [RFQ_PurDemandDetail]
    

      图片 4

     2. 而不是在做事时间保卫安全徽大学表索引

        当我们排查到一些大表缺点和失误索引,数据在100w以上,要是在劳作时间来保安索引,不管是创制索引照旧重新创设索引都会促成表的堵截, 这里表的响应会变慢也许直接卡死,前端应用程序直接呼吁超时。这里需求注意的。来看下新建一个索引的脚本会开采开启了行锁与页锁(ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)。

    CREATE NONCLUSTERED INDEX [ix_createtime] ON [dbo].[PUB_Search_Log] 
    (
        [CreateTime] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF,
     IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    GO
    

    本文由威尼斯官方网站发布于威尼斯官方网站登录,转载请注明出处:消除I/O花费后CPU耗费时间也减小

    关键词:

上一篇:xx(锁的等待时间)

下一篇:没有了