Saya memiliki dua contoh SQL Server di server yang sama:
- Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) Edisi Standar (64-bit)
- Microsoft SQL Server 2016 (SP1-CU5) (KB4040714) - 13.0.4451.0 Edisi Perusahaan (X64) (64-bit)
sp_configure hasilnya sama di kedua instance (kecuali opsi 2016 baru).
Saya telah membuat database baru pada kedua instance pada folder disk yang sama. Parameter autogrowth adalah sama.
Opsi statistik autocreate dan pembaruan otomatis dimatikan.
Lalu saya telah membuat tes dengan 10.000 sisipan ke tumpukan:
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
Hasil 1
Waktu tes rata-rata
- 2012 - 530 ms
- 2016 - 600 ms
Jadi, 2016 sekitar 11% lebih lambat.
- Kemudian saya telah membuat jejak SQL Profiler dengan hasil disimpan ke tabel untuk melihat durasi memasukkan tunggal dalam mikrodetik.
Hasil 2
Histogram durasi memasukkan tunggal 2012 vs 2016:
Pertumbuhan log transaksi dari sys.dm_io_virtual_file_stats adalah:
- 2012 - 5174784 byte
- 2016 - 5171200 byte
Selama tes ini kedua contoh dimulai. Tetapi satu tes hanya berjalan pada satu contoh setiap kali. Saya telah mengalokasikan 8Gb RAM per instance. Paket permintaannya sama. Akan menarik untuk menjalankan setiap instance pada kotaknya sendiri. Tapi mungkin satu mesin lebih baik, karena di sini kita tidak memiliki perbedaan perangkat keras dan lingkungan.
Pertanyaan
- Mengapa 2016 lebih lambat?
- Bisakah seseorang mereproduksi tes ini?
sumber
Jawaban:
Jelas sangat sulit, kebetulan memiliki versi yang persis sama di server yang sama tapi ... Saya harap hasil saya akan membantu Anda. Saya memiliki dua mesin yang berbeda mengkonfigurasi Windows Server 2012 R2 Standard Sayangnya mereka tidak memiliki perangkat keras yang sama tetapi serupa:
Mesin 1 (SQL Server 2016)
Mesin 2 (SQL Server 2012)
Dan saya menjalankan 5 kali di kedua mesin script yang sama yang Anda berikan dan memperoleh rata-rata berikut:
Apa hasil yang hampir berlawanan yang Anda dapatkan. Bagaimanapun, seperti yang Anda lihat, mesin 2012 saya memiliki prosesor yang lebih baik tetapi hard disk yang biasanya menunjukkan perbedaannya sama. Jadi, bahkan jika 2012 memiliki sumber daya yang lebih baik sedikit lebih lambat untuk kasus saya.
(Maaf, tolong, periksa lagi, versi pertamaku memiliki beberapa erratum penting)
sumber
Bisakah Anda menambahkan
(TABLOCK)
petunjuk untuk mengaktifkan pencatatan minimum? Apa bedanya setelah menerapkan petunjuk ini?sumber