sql server中PageLatch和PageIOLatch等待
sql server中PageLatch和PageIOLatch等待
sql server中PageLatch和PageIOLatch等待一、什么是Latch
Latch是SQL server内部用来同步资源访问的一个数据结构,和操作系统的critical section 或 ReaderWriterLock类似。Latch保护了那些想保护的资源,使得访问同步有序。比方说,当某个线程获得某个资源的latch的独占使用权的时候,别的线程如果也需要访问这个latch则它必须等待。
二、PageLatch
1、PAGELATCH_x类型的latch是SQL Server在缓冲池里的数据页面上经常加的一类latch。它用来同步访问buff pool中的数据页。SQL server中的Buff pool里每个page都有一个对应的LATCH。 要访问某个PAGE必须首先获得这个PAGE的LATCH。
2、在访问数据库的数据页(Data Page或Index Page)时,如果相应的buffer已经存在于Buffer Pool中,那么SQL Server先获取buffer的latch,这个Latch就是 PageLatch,然后读取Buffer中的数据。
3、PageLatch是Buffer Latch, 用来保护:Data page,Index Page, 系统page(PFS,GAM,SGAM,IAM等);在数据更新时,分配新的page,或拆分 index Page,会产生PageLatch 等待。
三、PageIOLatch
1、如果数据页不存在于Buffer Pool中,SQL Server必须从Disk中将数据加载到内存,此时,SQL Server在Buffer Pool中预留一个Buffer,并为该Buffer申请一个PageIOLatch_EX,表示正在加载Data Page或Index Page到内存;如果数据页已经加载到内存,那么 PageIOLatch_EX 释放。
2、在从Disk读取到Buffer期间,需要访问该数据页的所有Thread都需要等待,等待类型是:PageIOLatch_SH,PageIOLatch_EX 和 PageIOLatch_SH是不兼容的。
3、直到Disk的读取过程完成,PageIOLatch_EX释放,Thread申请到PageIOLatch_SH,表示数据页已经存在于Buffer Pool中。
四、当等待中出现很多PAGELATCH_ 等待,一般说明
1、SQL Server没有明显的内存和磁盘瓶颈。
2、应用程序发来大量的并发语句在修改同一张表格里的记录,而表格架构设计以及用户业务逻辑使得这些修改都集中在同一个页面,或者数量不多的几个页面上。这些页面有的时候也被称为Hot Page。这样的瓶颈通常只会发生在并发用户比较多的、典型的OLTP系统上。
3、这种瓶颈是无法通过提高硬件配置解决的,只有通过修改表格设计或者业务逻辑,让修改分散到尽可能多的页面上,才能提高并发性能。
五、当等待中出现很多PAGELATCH_ 等待,一般说明
当你的系统出现大量的 PAGEIOLATCH_ 类等待,说明你磁盘可能存在压力(磁盘速度不能满足当前业务需求)或你的内存不够用,不能缓存业务常用数据而经常要与磁盘交互!
- 利用数据库安装centos7(CentOS安装SQL Server vNext CTP1教程)
- sql版本号处理并发(SQL server高并发生成唯一订单号的方法实现)
- sql server日期查询语句(SQL Server中查询结果超出了查询时间范围解决方法)
- SQL SERVER中查看某个时间段内出错的作业
- Sql Server 更新锁
- sqlserver函数条件判断(Sql Server 开窗函数Over的使用实例详解)
- sql server与erp的结合应用(SQL Server中with as使用介绍)
- sql server 2014配置文件路径(SQL Server 2012 FileTable 新特性详解)
- sql server 2008 触发器(关于喜忧参半的SQL Server触发器详解)
- sql server中有哪几种锁定模式(SQL Server三种锁定模式的知识讲解)
- sql server数据库权限(SQL Server中通用数据库角色权限的处理详解)
- sqlserver日期型数据类型是哪个(SQL Server时间戳功能与用法详解)
- sql server中随机函数(SQL SERVER 2012新增函数之逻辑函数IIF)
- SQL Server中row_number的用法
- sql server 过期激活(SQL Server评估期已过问题的解决方法)
- sql server 2000数据库管理(SQL Server 2000/2005/2008删除或压缩数据库日志的方法)
- CellPress旗下的6 期刊,国人友刊来了解一下吧(CellPress旗下的6期刊国人友刊来了解一下吧)
- ()
- SCI检索 SSCI检索 EI检索 ISTP检索 CSCD检索简介(SCI检索SSCI检索EI检索)
- 参考文献里期刊名称的写法,你知道吗(参考文献里期刊名称的写法)
- 硕博期刊 SCI SSCI CSSCI分不清 一文带你看懂主流期刊分类(硕博期刊SCISSCI)
- 辱华品牌新百伦官宣新代言人IU,个别粉丝希望get爱豆同款(辱华品牌新百伦官宣新代言人IU)
热门推荐
- python识别验证码教程(Python3.5 + sklearn利用SVM自动识别字母验证码方法示例)
- vue 网页打印(vue打印功能实现的两种方法总结)
- mysql中length、char_length区别
- vueelementui动态表格(Vue Element前端应用开发之常规的JS处理函数)
- 织梦dedecms加固版需要付费吗(织梦dedecms系统后台安全提示去除方法)
- python中的insert(python assert的用处示例详解)
- nodejs的广播机制(node.js如何自定义实现一个EventEmitter)
- python里面的time如何用(详解python:time模块用法)
- js右下角提示框
- sql server 2008自定义函数(SQL SERVER 2012新增函数之逻辑函数CHOOSE详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9