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_ 类等待,说明你磁盘可能存在压力(磁盘速度不能满足当前业务需求)或你的内存不够用,不能缓存业务常用数据而经常要与磁盘交互!
- sqlserver字段增加删减(关于SQL Server中bit类型字段增删查改的一些事)
- SQL Server中GROUPING SETS
- sqlserver基本知识(sql server学习基础之内存初探)
- sqlserver怎么调成混合登录(如何快速删掉SQL Server登录时登录名下拉列表框中的选项)
- sql server中PageLatch和PageIOLatch等待
- kettle替换sql语句(sql server定时作业调用Kettle job出错的快速解决方法)
- sqlserver2000显示无服务器(SQL SERVER 2000 9003错误的解决方法只适用于SQL2000)
- Sql Server中的Null值
- sqlserver索引实例(SQL Server索引的原理深入解析)
- sqlserver改表结构不允许(SQL Server阻止保存修改表结构的解决方法)
- sqlserver厉害的函数(SQL Server里书签查找的性能伤害)
- 安装SQL Server 2016出错提示:需要安装oracle JRE7 更新 51(64位)或更高版本问题的解(安装SQL Server 2016出错提示:需要安装oracle JRE7 更新 5164位或更高版本问题的解)
- sqlserver字符串判断函数(解决sql server保存对象字符串转换成uniqueidentifier失败的问题)
- sqlserver触发器修改当前字段(利用SQL Server触发器实现表的历史修改痕迹记录)
- 阿里云sql server 2012(远程连接阿里云SqlServer 2012 数据库服务器的图文教程)
- sql server中随机函数NewID()和Rand()
- 越难春卷(越难春卷皮怎么用)
- 休闲VS新古典 办公家居简约设计(办公家居简约设计)
- 15个新成 园 位置公布 深圳龙岗2022年共建花园建设又有大动作(15个新成园位置公布)
- 记者手记 书记带我去 巡街(记者手记书记带我去)
- 富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元 | 美通社(富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元)
- 二次创业 的富士胶片,在进博会上首次展示完成转型后的全线医疗产品(二次创业的富士胶片)
热门推荐
- 云主机有哪些劣势(云主机怎么使用?用途有哪些?)
- linux系统的组成架构(Linux输入子系统框架原理解析)
- mysql的日志怎么清除(MySQL删除了记录不生效的原因排查)
- EasyUI DateBox设置默认值
- 网站提高服务器响应(网站解决和优化Server is too busy的一些方法)
- SVN提交代码需要注意哪些
- 对mysql性能优化的看法(聊聊MySQL的COUNT的性能,看看怎么最快?)
- win10怎么安装apache(apache启动失败怎么办 快速解决Win10系统apache启动失败的方法教程)
- dockercompose的常用命令的作用(PIP安装docker-compose超时问题解决方案)
- 常见的web应用服务器有哪些(常用的web服务器软件整理)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9