原文:SQL Server :理解BCM页

今天我们来讨论下批量更改映射(Bulk Changed Map:BCM)页,还有大容量日志恢复模式( bulk logged recovery model )如何运作的。

批量更改映射(Bulk Changed Map:BCM):SQL Server使用BCM页来跟踪自上次完全备份后,被大容量日志操作修改的区。在数据库文件里,BCM页是第7页。BCM对每个跟踪的页都有一个位。如果这个位标记是1,表示对应区在上次日志备份后因为大容量日志操作而修改。如果这个位标记为0,表示在上次日子备份后因为大容量日志操作而未被修改。一个BCM页可以保存近64000个区的信息。BCM页在每511232页重复一次。一个BCM页可以跟踪63904个区的信息。第2个BCM页会出现在第511239页。

在所有数据库里你都可以找到BCM页,但只有数据库进行大容量日志恢复模式时才会用到。在这个恢复模式里,当进行日志备份时,SQL Server会扫描BCM页,在里面查找在使用事务日志进行日志备份时标记为已经更改的区。这让SQL Server进行大容量日志恢复是可回滚的,如果是数据库是从数据库备份中还原,并且有一系列的事务日志备份。在大容量日志恢复模式里,大容量日志操作包括BCP,Bulkinsert, Select Into等在事务日志里是最低程度写入日志的,并通过BCM页对修改过的区进行跟踪。这让SQL Server 进行大容量操作时有更好的性能。

BCM页与简单还原和完全还原模式无关。在简单和完整还原模式里,大容量日志操作被当作完整日志操作。简而言之,在简单和大容量日志还原模式里,BCM页会通过大容量日志操作来跟踪所发生的改变。

我们用一个例子来理解下:新建一个空数据库,修改数据库还原模式为大容量日志恢复模式,将数据库进行备份,最后用DBCC PAGE来查看BCM页的信息。

 CREATE DATABASE BCMdb
GO
ALTER DATABASE BCMdb SET RECOVERY BULK_LOGGED
BACKUP DATABASE BCMdb TO DISK='D:\BCMdb.bak'
GO
DBCC TRACEON(3604)
DBCC PAGE('BCMdb',1,7,3)

可以清楚看到,没有看到因大容量日志操作而造成的分区改变。我们来执行一个大容量日志操作。

 SELECT * INTO BCMdb..SalesOrderDetail FROM AdventureWorks2008R2.sales.SalesOrderDetail
DBCC TRACEON(3604)
DBCC PAGE('BCMdb',1,7,3)

可以看到,有2条被标记为MIN_LOGGED 。第1条是因为IAM页中的改变,第2条是因为SELECT INTO插入的数据操作。现在当我们进行日志备份,SQL Server会备份事务日志,就是BCM页里标记为改变的区对应的事务日志。日志备份后,BCM页的相关区,因大容量日志操作而打上改变的标记,会打上未改变的标记。我们来进行下日志备份。

 BACKUP LOG BCMdb TO DISK='D:\BCMdblog.trn'
GO
DBCC PAGE('BCMdb',1,7,3)

注意,BCM页不会因为完整或差异备份做相应改变。事务日志备份是刚才事务日志的基础。SQL Server应该知道2个事务日志之间所发生的改变。如果差异或完整备份清空了BCM页里的标记,下个事务日志备份就不能跟踪或还原上一个日志备份和完整或差异备份之间的改变。简而言之,一个完整或差异备份不会打断事务日志备份链。

SQL Server :理解BCM页的更多相关文章

  1. SQL Server存储(7/8) :理解BCM页

    今天我们来讨论下批量更改映射(Bulk Changed Map:BCM)页,还有大容量日志恢复模式( bulk logged recovery model )如何运作的. 批量更改映射(Bulk Ch ...

  2. Sql Server 索引以及页和区

    索引(Index),相信大家都知道就是给表中的数据添加了一个目录,使我们可以快速检索到我们想要的数据,但这个目录是什么?SqlServer又是如何管理的?要搞明白这些,我们就要先了解sqlserver ...

  3. SQL Server 查看物理页存储

    创建测试表 Use Test create table dbo.employee( emp_lname varchar(12) not null, emp_fname varchar(12)not n ...

  4. sql server 2005+ 翻页

    select * from ( select row_number() over (order by dm) row,* from t_zycp where dm like '%4%' ) tmp

  5. SQL Server 存储(8/8):理解数据文件结构

    这段时间谈了很多页,现在我们可以看下这些页在数据文件里是如何组织的. 我们都已经知道,SQL Server把数据文件分成8k的页,页是IO的最小操作单位.SQL Server把数据文件里的第1页标记为 ...

  6. SQL Server :理解DCM页

    原文:SQL Server :理解DCM页 我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map ...

  7. SQL Server存储(6/8) :理解DCM页

    我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map:DCM ),还有差异备份(differen ...

  8. SQL Server索引进阶:第四级,页和区

    原文地址: Stairway to SQL Server Indexes: Level 4, Pages and Extents 本文是SQL Server索引进阶系列(Stairway to SQL ...

  9. 在SQL Server里如何进行页级别的恢复

    在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作.假设在SQL Server里你有一个损坏的页,你要从最近的数据库备份只还原有问题的页,而不是还原 ...

随机推荐

  1. 推荐一个第三方Qt库的集合

    https://inqlude.org/ Stable libraries | Development versions | Unreleased | Commercial | All attica ...

  2. xvfb 初步探究

    有时候我们不关注程序是否有界面(比如自动化测试),只要程序在运行就可以了 很感谢 xvfb 这个工具给我们提供了相关的功能 比如在没有 X server 的机器上运行 gedit, 可以用下面的命令 ...

  3. ExtJs4 笔记(6) Ext.MessageBox 消息对话框

    本篇演示消息对话框的用法,ExtJs封装了可能用到的各类消息框,并支持自定义的配置. 如下是用到的html: [html] <h1>各种消息框</h1> <div id= ...

  4. ExtJs4 笔记(2) ExtJs对js基本语法扩展支持

    本篇主要介绍一下ExtJs对JS基本语法的扩展支持,包括动态加载.类的封装等. 一.动态引用加载 ExtJs有庞大的类型库,很多类可能在当前的页面根本不会用到,我们可以引入动态加载的概念来即用即取.这 ...

  5. 与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API

    原文:与众不同 windows phone (19) - Device(设备)之陀螺仪传感器, Motion API [索引页][源码下载] 与众不同 windows phone (19) - Dev ...

  6. 理解Windows内核模式与用户模式

     1.基础 执行 Windows 的计算机中的处理器有两个不同模式:"用户模式"和"内核模式". 依据处理器上执行的代码的类型,处理器在两个模式之间切换.应 ...

  7. Delphi使用大图标编译程序

    在Windows Vista. Windows7以上Windows系统中可以支持大图标显示了,但是Delphi编译出来的程序却只能显示32x32的图标,这使Delphi编译的程序看起来很不专业.下面就 ...

  8. [置顶] 大量相关gis资源网盘打包下载

    详细请下载附件 所有资源下载(网盘下载): http://laoheitan.bego.cc arcgis教程: http://www.bego.cc/file/23322579 ENVI教程: ht ...

  9. Qt线程同步操作用QWaitCondition QMutex

    可以看到Qt提供了一个等待事件发生的类QWaitCondition,当条件满足时可以唤醒其它等待的线程. 写一个类可以在线程间实现同步功能 #ifndef THREADEVENT_H #define ...

  10. ACdream 1114(莫比乌斯反演)

    传送门:Number theory 题意:给n个数,n 和 每个数的范围都是 1---222222,求n个数中互质的对数. 分析:处理出每个数倍数的个数cnt[i],然后进行莫比乌斯反演,只不过这里的 ...