这篇文章主要为大家详细介绍了SQL Server 阻塞与等待(SQL)的简单示例,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!
应用系统承载着大量的业务,随之而来的是复杂的业务逻辑,在数据库上的表现就是有着大量的不同种类的SQL语句。
SQL语句执行的快慢又与阻塞等待有着密不可分的原因。
系统慢可能有很多种原因,硬件资源不足,语句不优化,结构设计不合理,缺少必要的运维方式。所有的这些问题都可以在阻塞与等待中看出端倪,发现并解决问题。
今天这篇我们主要讲述怎么样发现并解决系统的阻塞和等待。
您的系统是否有这样的问题?
一个好的SQL语句就好比一辆时速180的好车,好的系统硬件(CPU,内存,磁盘)就好比平坦宽阔的马路。看似好车配好路,一定可以开的很快了!其实还忽略了一点!当你驾驶一辆法拉利跑在北京宽阔的三环上,就算你是老炮中的“三环十二少“,早高峰你能开到多少? 北京的早高峰!北京的早高峰!
这个例子就引出了系统阻塞和等待的概念,红灯(硬件等待,如IO等待),这就是正常的等待。另外一辆车在你前面不走了或开的很慢,那么你也只能等待(也可以说成你被他阻塞了)!
一张图告诉你系统的主要等待类型及解决思路:
【图片暂缺】
任何问题的诊断都要从全局的角度考虑,最忌讳的就是看到一个指标高就冒然定位问题,然后以偏概全的去分析问题。
一个问题点可能涉及到很多部分,所以我们首先要从全局的角度定位系统问题,阻塞也是一样,到底系统中存在哪些类型的阻塞,哪些是主因,哪些是关联原因,哪些是次要的。
首先我们要关心数据库中有哪些等待类型
【图片暂缺】
知道了等到类型,我们要了解这些类型中,哪种占用了大量的时间:
【图片暂缺】
了解了主要的等待类型和时间,我们还要分析一下:什么数据库来的?哪些程序来的?什么用户请求导致的?什么时间阻塞最严重?
【图片暂缺】
【图片暂缺】
【图片暂缺】
【图片暂缺】
系统的整体等待情况了然于心,下面我们改看看具体哪些语句造成的等待,这也是解决问题的重要分析步骤。
哪些语类句等待最频繁
【图片暂缺】
语句具体的等待情况时怎样的呢?我们可以通过【原始视图】查看具体语句在执行过程中的真实阻塞情况
【图片暂缺】
通过全局定位,语句类型分析,到具体的语句执行阻塞状态,根据阻塞类型、次数、时间、连接程序、资源消耗等多种维度综合分析,我们可以清楚的看出数据库中的阻塞问题。
本例中系统主要的阻塞类型为CXPACKET和LCK_M_U,阻塞时间很长,主要的阻塞产生时间为上午十一点左右,主要的阻塞语句是一条update 和一个复杂的select查询等信息。
首先下面的这张图已经简单的说明了系统对应的等待需要怎么样的解决思路。
【图片暂缺】
本例中主要的CXPACKET是因为实例并行度参数配置不佳而导致,LCK_M_U主要是一条update被一个批处理的另一条update阻塞锁导致,优化update这类更新语句主要是保证update语句最优化,执行时间尽量缩短,另外高并发下的update比较常见的解决办法是使用索引利用key锁取代表锁以提高并发,可能被更新的表只有几十条记录,添加索引与不加索引的并发效率差别也会很大。另外程序的设计也是非常重要的,各种奥秘各位看官只能在实际环境中慢慢体会了,而使用SQL专家云工具的主要目的在于全面的定位问题,图表统计等形式清晰的展现问题,并根据工具提供的解决方案快速解决问题。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持四海网!
本文来自:http://www.q1010.com/179/9239-0.html
注:关于SQL Server 阻塞与等待(SQL)的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:SQL SERVER
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。