我正在做一些性能测试,发现 SQL 在全新数据库上的执行速度似乎比已经存在一段时间的数据库慢得多,我想知道为什么会这样,以及如何启动我的数据库创建后稍微好一点,这样我的性能测试就更准确了。
为了说明我的观点,我在这里有一个测试应用程序,它执行以下操作:
- 创建数据库和测试表
- 插入一些行
- 截断表格
- 插入更多行
2 大约是 4 的 1.5 倍
我正在做一些性能测试,发现 SQL 在全新数据库上的执行速度似乎比已经存在一段时间的数据库慢得多,我想知道为什么会这样,以及如何启动我的数据库创建后稍微好一点,这样我的性能测试就更准确了。
为了说明我的观点,我在这里有一个测试应用程序,它执行以下操作:
2 大约是 4 的 1.5 倍
这可能是由于数据库不在 RAM 中。仅仅因为创建了数据库并不意味着它已加载到 RAM 中。SQL Server 很可能只在数据库正在使用时才这样做,如果一段时间不使用,甚至可能会释放它们。类似于缓存。
创建数据库后,尝试从表中选择 count(*) 以确保所有内容都在 ram 中。然后,我希望 2 和 4 在大致相同的时间范围内表现。
啊,刚刚看到关于汽车增长的评论。这可以解释很多,并且截断表将使该空间可用,以便服务器不必分配新页面。——好评论 lnu。
编辑尝试在测试之前将您的数据和日志文件设置为 500 mb,以确保文件增长不是问题。类似的东西。
CREATE DATABASE [TestDB] ON PRIMARY
( NAME = N'TestDB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\TestDB.mdf' , SIZE = 512000KB , FILEGROWTH = 10%)
LOG ON
( NAME = N'TestDB_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\TestDB_log.ldf' , SIZE = 512000KB , FILEGROWTH = 10%)
GO
我尝试了 Inu 关于自动增长的注释,看起来这就是问题发生的原因。