web-dev-qa-db-ja.com

SQL Server 2016と2012の挿入パフォーマンス

  • 同じサーバーに2つのSQL Serverインスタンスがあります。

    • Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64)Standard Edition(64ビット)
    • Microsoft SQL Server 2016(SP1-CU5)(KB4040714)-13.0.4451.0(X64)Enterprise Edition(64ビット)
  • 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

平均テスト時間

  • 2012-530ミリ秒
  • 2016-600ミリ秒

したがって、2016年は約11%遅くなります。

  • 次に、SQLプロファイラートレースを作成し、結果をテーブルに保存して、単一の挿入期間をマイクロ秒で確認しました。

結果2

単一の挿入時間のヒストグラム2012 vs 2016: enter image description here

Sys.dm_io_virtual_file_statsからのトランザクションログの増加は次のとおりです。

  • 2012-5174784バイト
  • 2016-5171200バイト

これらのテスト中に、両方のインスタンスが開始されます。ただし、毎回1つのテストが1つのインスタンスでのみ実行されます。インスタンスごとに8Gb RAM=を割り当てました。クエリプランは同じです。各インスタンスを専用のボックスで実行するのは興味深いでしょう。しかし、ここでは、ハードウェアと環境の隠れた違い。

質問

  • なぜ2016年は遅いのですか?
  • 誰かがこのテストを再現できますか?
14
Olga Sosonnykh

明らかに、同じサーバーでまったく同じバージョンを使用するのは偶然ですが、私の結果がお役に立てば幸いです。 2台の異なるマシンでWindows Server 2012 R2 Standardを構成しています。残念ながら、ハードウェアは同じではありませんが、類似しています。

  1. マシン1(SQL Server 2016)

    • プロセッサー:Intel(R)Xeon(r)CPU X5650 @ 2.67GHz
    • Microsoft SQL Server 2016(RTM)-13.0.1601.5(X64)2016年4月29日23:23:58 Copyright(c)Microsoft Corporation Standard Edition(64-bit)on Windows Server 2012 R2 Standard 6.3(Build 9600:)(Hypervisor)
  2. マシン2(SQL Server 2012)

    • プロセッサー:Intel(R)Xeon(R)CPU E5-2667 0 @ 2.9 GHz
    • Microsoft SQL Server 2012-11.0.5058.0(X64)May 14 2014 18:34:29 Copyright(c)Microsoft Corporation Standard Edition(64-bit)on Windows NT 6.3(Build 9600:)(Hypervisor)

そして、あなたが提供した同じスクリプトを両方のマシンで5回実行し、次の平均を取得しました。

  • 2012:9961
  • 2016:8971

あなたが得るほとんど反対の結果は何ですか。とにかく、あなたが見たように、私の2012マシンはより良いプロセッサを持っていますが、通常違いを示すものであるハードディスクは同じです。したがって、2012年のリソースが優れていても、私の場合は少し遅くなります。

(申し訳ありませんが、もう一度確認してください、私の最初のバージョンにはいくつかの重要な誤りがありました)

1
Angel M.