首页 >> 大全

透过等待看数据库

2023-12-07 大全 25 作者:考证青年

等待分类与解决基本流程

步骤1.定位问题

系统等待往往能直观的反映出系统问题。通过一些常见的等待类型,同样可以找到系统瓶颈,结合性能计数器往往定位更准确。

如:系统中存在大量IO类等待,那么可能表示你的磁盘或内存是语句运行缓慢的原因,也是系统的瓶颈所在。

常见的等待类型:

步骤2.分析

问题与解决

这个等待可以简单理解成CPU相关的等待,主要发生在并行计划中。由于并行计划需要协同多个task同时工作,那么“协同”分配等等操作的时候出现的就是这个等待。

如果 在你系统中是最为严重的等待,这时候一般的表现是你的CPU很高。

解决方案:适当调整并行度。

一般建议系统如果超过32个CPU 那么设置成8或者4,如果系统中都是特别短小且频繁的语句建议设置成1(取消语句并行,要慎重真的符合你的场景才好)

并行开销的阀值,主要控制SQL优化器何时选用并行计划,建议默认值,此值设置的越小优化器越容易选择并行计划。

并行度的设置是针对实例级别的设置(2016中可以对单独数据库设置)。

IO类

和和 这三个等待是最为常见的和磁盘相关的等待。他们的不同点是 主要针对非数据页 I/O ,如备份操作所需的磁盘交互。 是数据页相关的磁盘等待。是日志相关。

如果系统中这三个等待是主要等待,说明系统磁盘存在压力或已经成为瓶颈。

这里用 为例进行说明

的 官方解释:在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“XX”模式。长时间的等待可能指示磁盘子系统出现问题。

的相关等待:

在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“破坏”模式。长时间的等待可能指示磁盘子系统出现问题。

在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“独占”模式。长时间的等待可能指示磁盘子系统出现问题。

在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“保持”模式。长时间的等待可能指示磁盘子系统出现问题。

透过等待看数据库_透过等待看数据库_

仅供内部使用。

在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“共享”模式。长时间的等待可能指示磁盘子系统出现问题。

在任务等待 I/O 请求中缓冲区的闩锁时发生。闩锁请求处于“更新”模式。长时间的等待可能指示磁盘子系统出现问题。

怎么来理解这个官方解释呢?首先明确一点,操作系统CPU操作的任何数据都是从内存中读取的,也就是说读取数据要经过这样的一条路:

磁盘中 ——> 内存中 ——> 最终使用

这里的 就是发生在,磁盘中 ——> 内存中

以读取为例:要读取的数据页不在内存中,所以就要去磁盘上读取这部分数据页,去磁盘读取数据的时候就会产生的相关等待,如果磁盘压力大,长时间不能反回数据,那么的时间也会越长,语句执行的时间也会越长。

注 : 当你的系统出现大量的 类等待,说明你磁盘可能存在压力(磁盘速度不能满足当前业务需求)或你的内存不够用,不能缓存业务常用数据而经常要与磁盘交互!

和磁盘有关的另一个等待状态,正在等待写日志记录,意味着写入速度也明显跟不上。而速度跟不上一般有两种情况:磁盘压力大响应时间长或真的速度不能满足读写需要。

和 上面讲述的 看似很像,但中间少了 IO 这个关键。

磁盘中 ——> 内存中 ——> 最终使用

磁盘中——>内存中 的等待为 而内存中——> 最终使用 的等待为

当数据已经在内存中的时候SQL 想要使用这个数据页就要给这个数据页加锁。

当等待中出现很多 等待,那么可以说明:

LCK_

LCK_类型中的所有很多,如果这种等待在系统中大量存在,可以说明,系统语句间的相互阻塞严重。如大家都知道的当你一张表的时候,你的会被阻塞直到完成。这里就不过多介绍场景了,主要看一下解决此类等待的主要方法:

LCK_类型中包含:(这里不做详细解读了)

当某任务正在等待获取当前键值上的 NULL 锁以及当前键和上一个键之间的插入范围锁时出现。键上的 NULL 锁是指立即释放的锁。有关锁兼容性矩阵,请参阅:sys.

当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的插入范围锁时出现。有关锁兼容性矩阵,请参阅 sys.。

任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的插入范围锁。有关锁兼容性矩阵,请参阅sys.。

当某任务正在等待获取当前键值上的排他锁以及当前键和上一个键之间的插入范围锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的共享范围锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的更新范围锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取当前键值上的共享锁以及当前键和上一个键之间的排他范围锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取当前键值上的更新锁以及当前键和上一个键之间的排他范围锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取当前键值上的排他锁以及当前键和上一个键之间的排他范围锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取共享锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取架构修改锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取架构共享锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取共享意向更新锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取共享意向排他锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取更新锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取更新意向排他锁时出现。有关锁兼容性矩阵,请参阅 sys.。

当某任务正在等待获取排他锁时出现。有关锁兼容性矩阵,请参阅 sys.。

此等待状态出现在已经把数据准备好,但是网络没有足够的发送速度跟上,所以的数据没地方存放。

北京格瑞趋势科技有限公司是聚焦于数据服务的高新技术企业,成立于2008年,创始团队及核心技术人员来自微软和雅虎。微软数据平台金牌合作伙伴,卫宁健康数据平台战略合作伙伴。通过产品+服务双轮驱动的业务模式,14年间累计服务4000+客户,覆盖互联网、市政、交通、电信、医疗、教育、电力、制造业等各个领域。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了