DBCC LOGINFO
DBCC log('QSSys', TYPE=2)
go
select * from sys.fn_dblog(null,null)
select [Dirty Pages],[Minimum LSN],[Checkpoint End],[CHKPT Begin DB Version],[Checkpoint Begin],operation,CONTEXT,[Log Record Length],AllocUnitName from fn_dblog(null,null)
SELECT * FROM dbo.T_CompanyAccount WITH(NOLOCK)
Operation:当前LSN所做的操作
CurrentLSN:事务日志中唯一标识序列号
Context:操作的上下文
TransactionID:事务ID
Log Record Fixed Length:LSN所站虚拟日志文件的固定长度
Previous LSN:前一个LSN号
AllocUntilID:所修改的那条数据所分配的单元ID
AllocUntilName:所修改的数据表名
Page ID:0001:00000121转换成十进制:289 所以查看pageid 为289 DBCC PAGE([Pratice],1,289,3)
SlotID:数据所在数据页面的第几条记录
PartitionID:数据所在数据页面所在的分区ID
[Checkpoint Begin]:开始时间
[CHKPT Begin DB Version]:SQL SERVER 的版本 SQL SRVER 2005,2008,2012 :611,661,706
[Checkpoint End]:结束时间
[Minimum LSN]:这个第一个日志记录的序列号(LSN)称为最小恢复序列号(min LSN)
[Dirty Pages]:脏的数据页
Oldest Replicated Begin LSN:如果数据库配置复制的话,那么最老的复制起始LSN
Next Replicated End LSN:下一个复制结尾LSN
Last Distributed End LSN:最新的分发结尾LSN
SPID:执行当前操作的进程ID
Beginlog Status:开始记录事务日志的状态,这个状态表示现时能够正常记录事务日志
Begin Time:事务开始时间
Transaction Name:事务名称
End Time:事务结束时间
Transaction Begin:记录这个事务的begin transaction的时候的cureent LSN
Master DBID:显示当前master数据库的DBID
Preplog Begin LSN:启动数据库前的前一个事务日志LSN
Prepare Time:准备启动数据库的时间
New Split Page:哪个数据页产生了页拆分
Rows Deleted:数据页有多少行被删除了
Description:描述这个事务是干什么的,有时候事务名称不一定就是他所做的操作名称,
比如这里碰巧事务名和描述都是CREATE TABLE 如果你为这个事务命名的话,那么只能看Description列看这个事务是做什么的
Operation |
Context |
解释 |
LOP_SET_BITS |
LCX_DIFF_MAP |
设置位图,资料:差异(Differential)备份:只备份上次完整备份后,做修改的部分。备份单位是区(Extent)。意味着某个区内即使只有一页做了变动,则在差异备份里会被体现.差异备份依靠一个BitMap进行维护,一个Bit对应一个区,自上次完整备份后,被修改的区会被置为1,而BitMap中被置为1对应的区会被差异备份所备份。而到下一次完整备份后,BitMap中所有的Bit都会被重置为0而这个BitMap在数据库第7页:DCM页差异变更(DifferentialChangedMap,DCM)页面他跟踪一个文件中的哪一个区在最新一次完整数据库备份之后被修改过。SQLSERVER用在增量备份时只对已发生数据变更的分区进行增量备份即可 |
LOP_BEGIN_XACT |
事务开始 |
|
LOP_MODIFY_ROW |
LCX_HEAP |
修改堆表中的某一行记录 |
LOP_PREP_XACT |
准备启动数据库 |
|
LOP_COMMIT_XACT |
提交事务 |
|
LOP_MODIFY_ROW |
LCX_BOOT_PAGE |
修改数据库启动页 |
LOP_MODIFY_HEADER |
LCX_PFS |
修改PFS页的页头部信息 |
LOP_INSERT_ROWS |
LCX_CLUSTERED |
插入数据到聚集索引的索引页 |
LOP_INSERT_ROWS |
LCX_INDEX_LEAF |
插入数据到索引的叶子节点即数据页 |
LOP_FORMAT_PAGE |
LCX_CLUSTERED |
重新组织聚集索引 |
LOP_DELETE_SPLIT |
LCX_CLUSTERED |
删除聚集索引表的一行记录引起页拆分 |
LOP_MODIFY_HEADER |
LCX_HEAP |
修改堆表的某页的页头信息 |
LOP_BEGIN_CKPT |
LCX_NULL |
检查点开始 |
LOP_END_CKPT |
LCX_NULL |
检查点结束 |
LOP_SET_FREE_SPACE |
LCX_PFS |
修改PFS页设置那个数据页是空闲的 |
LOP_ROOT_CHANGE |
LCX_CLUSTERED |
聚集索引的根节点改变 |
LOP_INSERT_ROWS |
LCX_HEAP |
插入数据到堆表 |
LOP_FORMAT_PAGE |
LCX_HEAP |
格式化堆里的数据页 |
Operation |
Lock Information |
解释 |
LOP_LOCK_XACT |
HoBt 0:ACQUIRE_LOCK_SCH_M METADATA: database_id = 14 STATS(object_id = 7, stats_id = 11) |
在事务里获取锁 |
在大容量日志恢复模式下,在事务日志记录里你会看不到对数据页的操作,当你使用bcp ,bulk inert, select into大容量操作语句的时候
像下图的那样修改数据和插入数据的记录你在事务日志记录里找不到的
所以大容量日志恢复模式时,ldf文件才这麽小,插入速度才这麽快
下面引用MSDN:
http://msdn.microsoft.com/zh-cn/library/ms190925.aspx可以尽量减少日志量的操作“最小日志记录”是指只记录在不支持时间点恢复的情况下恢复事务所需的信息。 本主题介绍在大容量日志恢复模式下(以及简单恢复模式下)按最小方式记录、但在运行备份时例外的操作。 注意在完整恢复模式下,所有大容量操作都将被完整地记录下来。 但是,可以通过将数据库暂时切换到用于大容量操作的大容量日志恢复模式,最小化一组大容量操作的日志记录。 最小日志记录比完整日志记录更为有效,并在大容量事务期间,降低了大规模大容量操作填满可用的事务日志空间的可能性。 不过,如果在最小日志记录生效时数据库损坏或丢失,则无法将数据库恢复到故障点。下列操作在完整恢复模式下执行完整日志记录,而在简单和大容量日志恢复模式下按最小方式记录:大容量导入操作(bcp、BULK INSERT 和 INSERT...SELECT)。 有关在何时对大容量导入表按最小方式进行记录的详细信息,请参阅在大容量导入中按最小方式记录日志的前提条件。 注意启用事务复制时,将完全记录 BULK INSERT 操作,即使处于大容量日志恢复模式下。SELECT INTO 操作。 注意启用事务复制时,将完全记录 SELECT INTO 操作,即使处于大容量日志恢复模式下。插入或追加新数据时,使用 UPDATE 语句中的 .WRITE 子句部分更新到大型值数据类型。 注意,在更新现有值时没有使用最小日志记录。 有关大型值数据类型的详细信息,请参阅数据类型 (Transact-SQL)。在 text、ntext 和 image 数据类型列中插入或追加新数据时的 WRITETEXT 和 UPDATETEXT 语句。 注意,在更新现有值时没有使用最小日志记录。 注意不推荐使用 WRITETEXT 语句和 UPDATETEXT 语句,因此应该避免在新的应用程序中使用这些语句。如果数据库设置为简单或大容量日志恢复模式,则无论是脱机还是联机执行操作,都会按最小方式记录一些索引 DDL 操作。 按最小方式记录的索引操作如下:CREATE INDEX 操作(包括索引视图)。ALTER INDEX REBUILD 或 DBCC DBREINDEX 操作。 注意不推荐使用 DBCC DBREINDEX 语句,因此应该避免在新的应用程序中使用该语句。DROP INDEX 新堆重新生成(如果适用)。 注意DROP INDEX 操作期间将始终完整记录索引页的释放操作。
还可以看一下这篇帖子,关于大容量日志恢复模式
http://social.msdn.microsoft.com/Forums/zh-CN/958febc2-5eaf-46e4-b658-4bea087c0b0f