位置: 编程技术 - 正文

SQL Server页类型汇总+疑问汇总(sqlserver2000分页)

编辑:rootadmin

SQL Server中包含多种不同类型的页,来满足数据存储的需求。不管是什么类型的页,它们的存储结构都是相同的。每个数据文件都包含相当数量的由8KB组成的页,即每页有bytes可用,每页都有byte用于页头的存储,剩下的空间

才用来存储实际的数据,在页的最后是数据行偏移数组,也可以叫“页槽”数组,我们可以把一个页看做是有一个个方格的书橱,哪行数据占用了哪个槽,都在页尾的位置进行标示,并且页尾数组的写入顺序是倒叙的,这样就可以有效的利用页空间。

由此可以预见,页面上的“槽”并不一定是有序存放的,当有新的ID进来,并且该ID位于该页的最大ID和最小ID之间时(假设是以ID进行排序的叶子页),那么该ID数据行则直接插入到已经存在的数据行的后面即可,当有查询需要检索该ID所在的行时,

数据库引擎从索引页找到该“叶子”页,将该页全部加载到内存中,通过页尾的行偏移数组找到对应的行。页尾数组的记录大小存储在页头里,数组里面每一个关于“页槽”的记录占用空间为2bytes。

据我所知,SQL Server数据文件共有种页类型:

类型1——数据页(Data Page):堆中的数据页聚集索引中的“叶子”页在数据文件中的位置是随机的DBCC PAGE 中m_type=1

类型2——索引页(Index Page):

非聚集索引非“叶子”级聚集索引在数据文件中的位置是随机的DBCC PAGE 中m_type=2

类型3——文本混合页(Text Mixed Page):

较短长度的LOB数据类型,多种类型,多行存储在数据文件中的位置是随机的DBCC PAGE 中m_type=3

类型4——文本页(Text Tree Page):

存储单个LOB行在数据文件中的位置是随机的DBCC PAGE 中m_type=4

类型5——排序页(Sort Page):

进行排序操作时的临时页常见于TempDB中,在用户数据中进行“ONLINE"操作时也可见(例如:联机创建索引未指定SORT_IN_TEMPDB选项时)在数据文件中的位置是随机的DBCC PAGE 中m_type=

类型6——全局分配映射页(GAM Page):

Global Allocation Map,记录已分配的非共享(混合)区是否已被使用每个区占用一个bit位,如果该值为1,说明该区可以使用,0则说明已被使用(但是并不一定存储空间已满)第一个GAM页总是存储在每个数据文件PageID为2的页上DBCC PAGE 中m_type=8

类型7——共享全局分配映射页(SGAM Page):

Shared Global Allocation Map,记录每一个共享(混合)区是否已被使用每个区占用一个bit位,如果该值为1,说明该区有空闲的存储空间,0则说明区已满第一个SGAM页总是存储在每个数据文件PageID为3的页上DBCC PAGE 中m_type=9

类型8——索引分配映射页(IAM Page):

Index Allocation Map,记录GAM页之间堆表或者索引的区分配在数据文件中的位置是随机的DBCC PAGE 中m_type=

类型9——空闲空间跟踪页(PFS Page):

Page Free Space,跟踪页的可用空间。第一个PFS页总是存储在每个数据文件PageID为1的页上DBCC PAGE 中m_type=

类型——启动页(Boot Page):

存储所在数据库范围的信息仅在每个数据库文件(file)ID为1的PageID为9的页上DBCC PAGE 中m_type=

类型——服务配置页(Server Configuration Page):

存储了sys.configurations中返回结果中的部分信息该页仅存在于master数据库的文件ID为1PageID为的页上

类型——文件头页(File Header Page):

所在文件的信息总是存在于每个文件PageID为0的页上DBCC PAGE 中m_type=

类型——差异更改映射(Differential Changed map):

记录GAM之间的每次全备或差异备份之后更改过的页面第一个DCM页面在每个数据文件PageID为6的页上DBCC PAGE 中m_type=

类型——大容量更改映射(Bulk Change Map):

记录每个GAM之间上次备份之后大容量操作的更改第一个BCM页面在每个数据文件PageID为7的页上DBCC PAGE 中m_type=

如下SQL可以查询到你当前的数据库中的缓存的页类型及数量:

SELECT CASE page_type WHEN 'DIFF_MAP_PAGE' THEN '差异更改映射(Differential Changed map)' WHEN 'TEXT_MIX_PAGE' THEN '文本混合页(Text Mixed Page)' WHEN 'ML_MAP_PAGE' THEN '这个字面意思应该是Minimally-Logged,最小化日志记录' WHEN 'INDEX_PAGE' THEN '索引页(Index Page)' WHEN 'FILEHEADER_PAGE' THEN '文件头页(File Header Page)' WHEN 'DATA_PAGE' THEN '数据页(Data Page)' WHEN 'IAM_PAGE' THEN '索引分配映射页(IAM Page)' WHEN 'GAM_PAGE' THEN '全局分配映射页(GAM Page)' WHEN 'BULK_OPERATION_PAGE' THEN '这个字面意思应该是大容量更改记录' WHEN 'TEXT_TREE_PAGE' THEN '文本页(Text Tree Page)' WHEN 'SGAM_PAGE' THEN '共享全局分配映射页(SGAM Page)' WHEN 'PFS_PAGE' THEN '空闲空间跟踪页(PFS Page)' WHEN 'BOOT_PAGE' THEN '启动页(Boot Page)' ELSE '排序页?' END , page_type , COUNT(*) cntFROM sys.dm_os_buffer_descriptors WITH ( NOLOCK )WHERE database_id = DB_ID()GROUP BY page_type

结果如下图所示:

按上面的数据类型介绍,我们很自然地认为类型——大容量更改映射(Bulk Change Map)就是图示查询结果中第行BULK_OPERATION_PAGE

但是事实是吗?我们将data_type=BULK_OPERATION_PAGE的记录查出来:

SELECT TOP *FROM sys.dm_os_buffer_descriptors WHERE page_type='BULK_OPERATION_PAGE' AND DB_ID()=database_idORDER BY database_id,FILE_ID,page_id

查询结果:

我们把查询结果中的一个PageID带入DBCC PAGE(其实这里已经看出,这个pageID并不像上面说的第一个BCM页面在每个数据文件PageID为7的页上,它们是逻辑上连续的页!

我们发现上面的m_type=!

我搜遍了google也没有找到m_type=是什么记录!

参考网址: map page,是在“大容量日志”模式下,记录自上次备份以来哪些区被更改过,该页第一个位置总是在每个文件的第7页上,我们折回上面第一个查询时的第三行,即PageType是ML_MAP_PAGE的那行,

并将其带入如下SQL查询出pageID的记录:

发现这才是传说中的那个第一页总是出现在每个文件第7页的混蛋!

我们将PageID7带入DBCC PAGE:

Oh,SHIT!这个的m_type是!

好吧,我只能说,是我曲解了人家字面的意思,原来:

BCM ,大容量更改映射(Bulk Change Map),在数据库缓存中对应的PageType竟然是ML_MAP_PAGE!Minimally-Logged Page!

而那个该死的BULK_OPERATION_PAGE(m_type=)是什么东西,谁能告诉我?

另外那个UNLINKED_REORG_PAGE,应该就是排序页吧?

推荐整理分享SQL Server页类型汇总+疑问汇总(sqlserver2000分页),希望有所帮助,仅作参考,欢迎阅读内容。

SQL Server页类型汇总+疑问汇总(sqlserver2000分页)

文章相关热门搜索词:sqlserver中一个数据页的大小是多少kb,sqlserver实现分页,sqlserver中一个数据页的大小是多少kb,sqlserver的分页,sqlserver的分页语句,sql server中一个数据页的大小,sql server页面,sql server 页的大小,内容如对您有帮助,希望把文章链接给更多的朋友!

MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法 但是我们可以换一种方法解决这个问题。下面就来分析下解决办法。对text或ntext类型的数据在查询中不能进行字符串操作。这时用得最多的是把text当作v

积分获取和消费的存储过程学习示例 1.GM_JF客户账户积分表2.GM_JF_DETAIL客户账户积分消费记录3.GM_JF_ACTION_RULES积分动作规则表4.GM_JF_GOODS_RULES积分商品规则表--===============测试========================

sql多表行转列、级联行转列示例代码 现有两表A,BA表存储商品点击日志,B表存储商品要求显示当天所有商品点击量列表并附带总数并按天排序declare@sqlvarchar()set@sql='selectCONVERT(varchar(),a

标签: sqlserver2000分页

本文链接地址:https://www.jiuchutong.com/biancheng/320411.html 转载请保留说明!

上一篇:SQL Server内存遭遇操作系统进程压榨案例分析(sql server 内存管理)

下一篇:MSSQL报错:参数数据类型 text 对于 replace 函数的参数 1 无效的解决办法(数据库参数错误)

  • 银行电子承兑到期多久时间之内可以兑现
  • 金蝶余额调节表怎么看当月的
  • 人力资源服务的概念
  • 发货就要开票吗是真的吗
  • 未核定印花税
  • 个人出租商业用房
  • 劳务分包企业所得税25%
  • 应付借款利息分录
  • 提取法定盈余公积金会计分录
  • 未收到发票暂估入库的进项税额可以暂估进原料成本吗
  • 委托贷款对方单位不还
  • 少缴纳个人所得税的需要付什么责任
  • 劳务发票需要身份证原件吗
  • 旧发票专用章如何处理
  • 为什么非征期不允许汇总上传
  • 税务行政强制行为遵循的原则
  • 提供出口收汇核算方法
  • 企业重组 资产重组
  • 个体户怎
  • 长期待摊费用的内容和特征
  • 印花税分配比例
  • macbookpro磁盘需要分区吗
  • mac qq音乐怎么下载mp3格式的音乐
  • 苹果手机录音配音乐怎么配
  • 电脑网速不好怎么提升网速
  • linux 书 推荐
  • 水煮鱼的做法和步骤 家常
  • 企业研发费用的优惠政策
  • 原 !神静态网页布局详解,html+css布局实战,附详细代码
  • 销售退回的会计分录金额
  • 喝薏米红豆水最佳时间
  • 超分辨率图像复原
  • 一次性取得的租金收入
  • 购进农产品增值税进项税额的确认方法
  • vue2.0安装
  • 作为大学生你能为国家安全贡献哪些力量论文
  • chronyc配置
  • 创建command对象
  • 处置固定资产账务处理进什么科目
  • mysql innode
  • mongodb简单使用
  • 会务费如何入账
  • 样品开发计划
  • 银行会计的基本核算方法包括的内容有
  • 印花税会计处理办法
  • 进项票可以抵扣企业所得税吗
  • 多缴纳增值税
  • 房地产企业怎么交房产税
  • 结转完期间损益是不是可以结账了
  • 职工医保报销会扣医保卡的钱吗
  • 合理损耗怎么算
  • 残次品生产成本怎么算
  • 收到去年所得税汇算清缴退税账务处理
  • 库存现金的主要内容有哪些
  • 公司备用金使用后没有发票抵扣
  • 收到的赔款罚款怎么做账
  • 企业应该设置几个安全管理人员
  • mysql 树状查询语句
  • win7系统升级到win10后,还能还原回来吗
  • elccest.exe是间谍广告程序吗 elccest进程有什么作用
  • bhvc.exe
  • 在mac下如何安装软件
  • centos6 grub
  • WIN10系统中没有接入音频设备 要启动gui
  • Remind_XP.exe - Remind_XP是什么进程 有什么用
  • win7 txt文件属性更改
  • win8.1怎么用
  • windows10电量图标消失了怎么还原
  • win10安装grads
  • 笔记本自带的win8
  • python中判断
  • 爬虫 python
  • perl字符串替换 ~s
  • jquery插件怎么用到自己的网站
  • shell脚本技巧
  • js封装是什么意思
  • eclipse自动生成
  • 湖南地税网上办税服务厅
  • 河北怎么网上申请无犯罪证明
  • 法人注册怎么注册
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设