如果我想创建 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
Perform volume maintenance tasks
只需1-2 秒。
这是为什么?有人可以向我解释这是什么原因吗?
那是因为Instant File Initialization。简而言之,SQL Server 可以利用数据库数据文件(而非事务日志文件)的这种特权。这意味着 SQL Server 在初始化时不必将数据文件清零。
如果没有授予 SQL 服务帐户的“执行卷维护任务”权限,则在创建数据库时,SQL Server 需要将“test.mdf”和“test_log.ldf”清零。
使用“执行卷维护任务”特权权限集,SQL Server 只需将“test_log.ldf”置零。开销明显减少,因此CREATE DATABASE测试的持续时间最短。