你的位置:首页 > 软件开发 > 数据库 > 检查点(Checkpoint)过程如何处理未提交的事务

检查点(Checkpoint)过程如何处理未提交的事务

发布时间:2016-01-28 11:01:31
每次我讲解SQL Server之前,我都会先简单谈下当我们执行查询时,在SQL Server内部发生了什么。执行一个SELECT语句非常简单,但是执行DML语句更加复杂,因为SQL Server要修改内存中的相关页,并在事务日志里记录整个事务。介绍完这些特定步骤后,我总会问同样的 ...

检查点(Checkpoint)过程如何处理未提交的事务

每次我讲解SQL Server之前,我都会先简单谈下当我们执行查询时,在SQL Server内部发生了什么。执行一个SELECT语句非常简单,但是执行DML语句更加复杂,因为SQL Server要修改内存中的相关页,并在事务日志里记录整个事务。

介绍完这些特定步骤后,我总会问同样的问题:当我们有个未提交的事务,这个时候刚好有检查点(Checkpoint)发生,SQL Server会崩溃么?在我们数据文件里有我们未提交的数据么?先思考下,然后再写下你的答案。

创建测试场景

现在我想和你一起重建这个特定场景,最后你会看到你是否回答对了。这个场景的第一步,我创建了一个新的数据库,一个新的表,并插入一些记录。

 1 -- Create a new database 2 CREATE DATABASE Checkpointing 3 GO 4  5 -- Use it 6 USE Checkpointing 7 GO 8  9 -- Create a new table10 CREATE TABLE Foo11 (12   Col1 CHAR(100) NOT NULL,13   Col2 CHAR(100) NOT NULL,14   Col3 CHAR(100) NOT NULL15 )16 GO17 18 -- Insert a record19 INSERT INTO Foo VALUES20 (21   REPLICATE('A', 100),22   REPLICATE('B', 100),23   REPLICATE('C', 100)24 )25 GO26 27 -- Retrieve the record28 SELECT * FROM Foo29 GO

原标题:检查点(Checkpoint)过程如何处理未提交的事务

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录