一尘不染

为什么将 SQL Server 用户添加到“执行卷维护任务”可以提高数据库调整大小的速度?

sql-server

如果我想创建 5GB 的数据库

CREATE DATABASE [test]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'test', FILENAME = N'E:\2012\test.mdf' , SIZE = 5529600KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'test_log', FILENAME = N'E:\2012\test_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)

我的 SSD需要1 分钟

但是当我将 SQL Server 用户添加到Perform volume maintenance tasks

在此处输入图像描述

只需1-2 秒

这是为什么?有人可以向我解释这是什么原因吗?


阅读 158

收藏
2022-11-23

共1个答案

一尘不染

那是因为Instant File Initialization。简而言之,SQL Server 可以利用数据库数据文件(而非事务日志文件)的这种特权。这意味着 SQL Server 在初始化时不必将数据文件清零。

如果没有授予 SQL 服务帐户的“执行卷维护任务”权限,则在创建数据库时,SQL Server 需要将“test.mdf”和“test_log.ldf”清零。

使用“执行卷维护任务”特权权限集,SQL Server 只需将“test_log.ldf”置零。开销明显减少,因此CREATE DATABASE测试的持续时间最短。

2022-11-23