当前位置: 首页 > news >正文

SQL Server 2008 存储结构之DCM、BCM

原文首发于it168,链接见http://tech.it168.com/a2010/0921/1106/000001106857.shtml

差异变更(Differential Changed Map,DCM)页面。它跟踪一个文件中的哪一个区在最新一次完全数据库备份以后被修改过。这样SQL Server用在增量备份时只对已发生数据变更的分区进行增量备份即可。

   那么首先让我们执行一下dbcc page(testDB,1,6,2)命令,可以看出前96字节为文件头,接下来的96个字节为保留页面,从第195个字节才开始记录区是否已做变更。由 于是新库,数据对象并不多;ffff 7f,这三个字节记录了需要进行下次备份需要进行增量备份的信息。

1
 

  让我们换个视图来看一下,即执行dbcc page(testDB,1,6,3),这样可以清楚地看到只有第0页到第183页是CHANGED状态,下次备份需要备份这些页面。

1
 

  接下来当我们执行一次testDB库全备后,再次用dbcc page(testDB,1,6,3)观察一下变化。

1
 

  就会发现除了一下系统保留页面,基本上都变更为NOT CHANGED状态,记住DCM页面记录的是区变更信息,并且系统保留页面是一定要备份的。

  BCM页

   批量更改映射(Bulk Changed Map,BCM)页面,只有在数据库处于BULK_LOGGED模式,并且没有执行任何bulk批量操作时,才被使用到,因为BULK_LOGGED模式 时数据库日志记录了包含数据库所有改变的完整顺序记录,所以我们能够将数据库还原到任一时间点。

  大容量日志恢复模式是一种特殊用途的恢复模式,只应偶尔用于提高某些大规模大容量操作(如大量数据的大容量导入)的性能

  与完整恢复模式(完全记录所有事务)相比,大容量日志恢复模式只对大容量操作进行最小记录(尽管会完全记录其他事务)。大容量日志恢复模式保护大容量操作不受媒体故障的危害,提供最佳性能并占用最小日志空间。

  但是,大容量日志恢复模式会增加这些大容量复制操作丢失数据的风险,因为大容量日志操作阻止再次捕获对每个事务逐一所做的更改。如果日志备份包含大容量日志操作,则无法还原到该日志备份中的时点,而只能还原整个日志备份。

  为跟踪数据页,日志备份操作依赖于位图页的大容量更改,位图页针对每个区包含一位。对于自上次日志备份后由大容量日志操作所更新的每个区,在位图中将每个位都设置为 1。

  因为BCM页的应用场景比较单一,在此不对BCM页做相关详述。






本文转自baoqiangwang51CTO博客,原文链接:http://blog.51cto.com/baoqiangwang/412108,如需转载请自行联系原作者

相关文章:

  • 网络管理员的基本素质
  • 一步一步学会puppet(二)--模块和类
  • DHCP用户类选项配置
  • [Unity3d]安卓无法加载assetbundle的问题
  • jquery.idTabs使用方法
  • Windows Workflow Foundation学习资源
  • lvs-nat负载均衡模式
  • 第2章 网络文档
  • Lync 小技巧-52-Lync 2013-不加域-客户端-2-导入-证书-信任链
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • linux如何开启telnet服务
  • Linux网络相关、firewalld和netfilter、netfilter5表5链介绍、iptables语法
  • 图的操作
  • linux命令:编译安装软件包(举例安装tengine nginx)
  • 总结之:CentOS 6.5 HTTPD服务的全面解读及配置详解(1)
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • C++入门教程(10):for 语句
  • CSS相对定位
  • HTTP--网络协议分层,http历史(二)
  • Java知识点总结(JDBC-连接步骤及CRUD)
  • k8s 面向应用开发者的基础命令
  • Mysql5.6主从复制
  • Object.assign方法不能实现深复制
  • php中curl和soap方式请求服务超时问题
  • Python打包系统简单入门
  • SQLServer之索引简介
  • tweak 支持第三方库
  • 分布式熔断降级平台aegis
  • 给Prometheus造假数据的方法
  • 缓存与缓冲
  • ------- 计算机网络基础
  • 京东美团研发面经
  • 经典排序算法及其 Java 实现
  • 你真的知道 == 和 equals 的区别吗?
  • 容器服务kubernetes弹性伸缩高级用法
  • 新手搭建网站的主要流程
  • 学习使用ExpressJS 4.0中的新Router
  • 最近的计划
  • MyCAT水平分库
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 湖北分布式智能数据采集方法有哪些?
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #13 yum、编译安装与sed命令的使用
  • #vue3 实现前端下载excel文件模板功能
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (1)(1.13) SiK无线电高级配置(六)
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (十) 初识 Docker file
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (状压dp)uva 10817 Headmaster's Headache
  • ./和../以及/和~之间的区别
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布