每次我讲解SQL Server之前,我都会先简单谈下当我们执行查询时,在SQL Server内部发生了什么。执行一个SELECT语句非常简单,但是执行DML语句更加复杂,因为SQL Server要修改内存中的相关页,并在事务日志里记录整个事务。介绍完这些特定步骤后,我总会问同样的 ...
每次我讲解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
(#换成@)。