首页 > 数据库 > SQL Server > 正文

Sql Server tempdb原理-启动过程解析实践

2024-08-31 00:55:27
字体:
来源:转载
供稿:网友
Sql Server tempdb原理-启动过程解析实践

我们知道在SqlServer实例启动过程中数据库会进行还原(Redo,Undo)然后打开提供服务,但我们知道tempdb是不提供重做机制的(Redo)那tempdb是如何还原的呢?如果tempdb损坏我们该怎么办,这里我将通过实例给大家介绍.

有时tempdb因为一些原因会变得非常巨大,一些DBA的解决方式就是重启数据库实例,的确重启后tempdb就会恢复到初始设置大小,理由很简单tempdb会重新创建.

Tempdb的创建过程.

1在model库打开后进行tempdb创建(可以日志中看到model总是在tempdb之前打开)

2从model库中拷贝extent(s)到tempdb主文件并根据master库中的meta data信息创建tempdb主数据文件(Mdf)

3 根据master中定义tempdb的主文件大小填充主文件

4 根据master中定义的主日志文件大小创建日志文件

5 创建,附加其他文件

注:如果tempdb不能创建,则实例shutdown

这里我们做个测试在model库中简单的创建一个表然后重启实例

code

use modelcreate table t1(id int)

重启实例后我们可以发现tempdb中也存在表t1 如图1-1,其实就是tempdb启动时主文件要从model中拷贝扩展区(extent).我们甚至可以分析相应的数据页,可以看到相应的数据页tempdb与model是完全一致的.感兴趣的朋友可以自行尝试.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表