SQL Server :理解BCM页

原文: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页的信息。

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

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

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

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

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

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

 

时间: 2024-07-28 17:12:49

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

SQL Server中的页和区

SQL Server中的页和区 真题1. SQL Server的两种存储结构是什么? 答案:SQL Server的两种存储结构是页与区间. (1)页:用于数据存储的连续的磁盘空间块,SQL Server中数据存储的基本单位是页,磁盘I/O操作在页级执行,页的大小为8KB,每页的开头是96字节的页头,用于存储有关页的系统信息,包括页码.页类型.页的可用空间以及拥有该页的对象的分配单元ID. (2)区间:区是管理空间的基本单位,一个区是8个物理上连续的页(即64KB)的集合,所有页都存储在区中.SQ

SQL Server :理解DCM页

原文:SQL Server :理解DCM页 我们已经讨论了各种不同的页,包括数据页.GAM与SGAM页.PFS页,还有IAM页.今天我们来看下差异变更页(Differential Change Map:DCM ),还有差异备份(differential backups). 差异变更页(Differential Change Map:DCM ) :SQL Server使用差异变更页来跟踪自上次完全备份后修改过的区.DCM页在数据文件里是第6页.DCM页用来跟踪完全备份后修改过的区.DCM为每个跟踪

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

在今天的文章里我想谈下每个DBA应该知道的一个重要话题:在SQL Server里如何进行页级别还原操作.假设在SQL Server里你有一个损坏的页,你要从最近的数据库备份只还原有问题的页,而不是还原整个数据库. 我们来破坏一个页 第一步我想向你展示下如何建立表(或索引)里有个特定页损坏的情景,这里我们会进行一些魔术,因为开箱即用(out-of-box)的SQL Server本身不会引入任何损坏的页(如果有的话,恭喜你找到了一个BUG).我们从创建一个新的数据库,往新建的表插入一些记录开始. 1

SQL Server数据库损坏检测

  在一个理想的世界中,不会存在任何数据库的损坏,就像我们不会将一些严重意外情况列入我们生活中的日常一样,而一旦这类事情发生,一定会对我们的生活造成非常显著的影响,在SQL Server中也同样如此,或许几年内您没有遇见过数据库中出现这类情况,而一旦遇见这类情况,往往伴随着数据的丢失,宕机,严重甚至您本身的职业生涯也会受到影响.因此对于这类情况,我们需要了解数据库损坏方面的知识,以便我们能够事前准备,事后能够处理.本篇文章会对数据库损坏的原因.现象.事前和事后的一些处理方法以及简单的修复方法进行

第1周 SQL Server 如何执行一个查询

原文:第1周 SQL Server 如何执行一个查询         大家好,欢迎来到第1周的SQL Server性能调优培训.在我们进入SQL Server性能调优里枯燥难懂的细节内容之前,我想通过讲解SQL Server如何执行一个查询来建立基础.这个部分非常重要,因为接下来的培训中我们会以这些概念来加深我们对SQL Server的认识. 当我们执行一个查询时,在SQL Server中最重要的组件有哪些,下面这张图片可以给大家一个概观的认识.         可以看到,SQL Server内

SQL Server查询性能优化之创建合理的索引(上)

本文主要作为优化查询性能的一些知识储备,感觉知识点有些散,不知道起啥名字好,独立成文又没有达到把每个点都说透彻那样的高度,且就当做创建合理索引的一个楔子把.本文对实际应用没有太大的指导意义,但可以加深我们对SQL Server理解,夯实我们的基本功,就像小说里面的武功一样,没有足够的内功基础,给你再好的秘籍你也成不了武林高手. 序言 写这篇文章时表示鸭梨很大,主要是对SQL Server的认识很有限,远远不足把这个话题说清楚,不过还是鼓起勇气写出来,也算作自己对索引认识的一个总结.索引这潭水太深

SQL Server 存储过程三种分页效率测试对比

很多朋友对大数据库分页技术感兴趣,在 SQL Server 优先会考虑存储过程,本人也是用存储过程分布,而且是本实例中的第二方案,下面我们来用实例对比 利用Not In和SELECT TOP分页,利用ID大于多少和SELECT TOP分页,利用SQL的游标存储过程分页 这三种分页技术的效率. 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY (1, 1) NOT NULL , [FirstName] [nvarchar] (100) COLL

SQL Server查询语句运行指标值监测学习总结

前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问题,并且分析其优化方式. 通过本篇我们可以学习到调优中经常利用的几个利器! 废话少说,开始本篇的正题. 技术准备 数据库版本为SQL Server2008R2,利用微软的一个更简洁的案例库(Northwind)进行分析. 利器一.IO统计 通过这个IO统计能为我们分析出当前查询语句所要扫描的数据页的

SQL Server调优系列进阶篇(查询语句运行几个指标值监测)

原文:SQL Server调优系列进阶篇(查询语句运行几个指标值监测) 前言 上一篇我们分析了查询优化器的工作方式,其中包括:查询优化器的详细运行步骤.筛选条件分析.索引项优化等信息. 本篇我们分析在我们运行的过程中几个关键指标值的检测. 通过这些指标值来分析语句的运行问题,并且分析其优化方式. 通过本篇我们可以学习到调优中经常利用的几个利器! 废话少说,开始本篇的正题. 技术准备 数据库版本为SQL Server2008R2,利用微软的一个更简洁的案例库(Northwind)进行分析.   利