同じサーバーに2つのSQL Serverインスタンスがあります。
sp_configureの結果は両方のインスタンスで同じです(新しい2016オプションを除く)。
同じディスクフォルダーの両方のインスタンスに新しいデータベースを作成しました。自動拡張パラメーターは同じです。
自動作成および自動更新統計オプションはオフになっています。
次に、ヒープへの10000の挿入でテストを行いました。
set nocount on
go
create table dbo.TestInsert ( i int not null, s varchar(50) not null )
declare @d1 datetime, @d2 datetime, @i int
set @d1 = getdate()
set @i = 1
while @i <= 10000
begin
insert into dbo.TestInsert ( i, s ) select @i, replicate( 'a', 50 )
set @i = @i + 1
end
set @d2 = getdate()
select datediff(ms, @d1, @d2)
drop table dbo.TestInsert
結果1
平均テスト時間
したがって、2016年は約11%遅くなります。
結果2
Sys.dm_io_virtual_file_statsからのトランザクションログの増加は次のとおりです。
これらのテスト中に、両方のインスタンスが開始されます。ただし、毎回1つのテストが1つのインスタンスでのみ実行されます。インスタンスごとに8Gb RAM=を割り当てました。クエリプランは同じです。各インスタンスを専用のボックスで実行するのは興味深いでしょう。しかし、ここでは、ハードウェアと環境の隠れた違い。
質問
明らかに、同じサーバーでまったく同じバージョンを使用するのは偶然ですが、私の結果がお役に立てば幸いです。 2台の異なるマシンでWindows Server 2012 R2 Standardを構成しています。残念ながら、ハードウェアは同じではありませんが、類似しています。
マシン1(SQL Server 2016)
マシン2(SQL Server 2012)
そして、あなたが提供した同じスクリプトを両方のマシンで5回実行し、次の平均を取得しました。
あなたが得るほとんど反対の結果は何ですか。とにかく、あなたが見たように、私の2012マシンはより良いプロセッサを持っていますが、通常違いを示すものであるハードディスクは同じです。したがって、2012年のリソースが優れていても、私の場合は少し遅くなります。
(申し訳ありませんが、もう一度確認してください、私の最初のバージョンにはいくつかの重要な誤りがありました)