Saya memiliki sepotong kode yang melakukan sisipan ke dalam tabel yang sangat dinormalisasi. Tabel memiliki jumlah kolom mulai dari ~ 100 hingga 300+. Ini adalah SQL Server 2008 R2, berjalan pada Windows Server 2008.
Setiap memasukkan terdiri dari memasukkan ke sejumlah tabel di bawah transaksi yang sama. Beberapa sisipan dikelompokkan oleh NHibernate, tetapi beberapa tidak bisa, tetapi semuanya masih dalam transaksi yang sama.
Ketika saya melakukan insert untuk mengatakan 500 kali dengan berulang kali memanggil sepotong kode yang melakukan insert, saya mendapatkan rata-rata ~ 360 ms.
Yang aneh adalah, ketika saya menjalankan kode uji secara bersamaan menggunakan 4 proses (jalankan exe yang sama dari 4 perintah yang berbeda meminta di bawah windows server 2008), kinerja penyisipan per panggilan menjadi jauh lebih baik. Saya melihat semburan yang bergerak secepat 90 ms (hampir X4 lebih cepat). Saya mengukur waktu penyisipan dari kode.
Karena 4 proses tidak tahu apa-apa tentang satu sama lain, saya berasumsi bahwa ini ada hubungannya dengan SQL Server, tapi saya sama sekali tidak tahu mengapa. Saya ingin tahu mengapa hal ini terjadi dan jika ada konfigurasi yang memungkinkan saya untuk mendapatkan kinerja yang sama ketika memasukkan tidak terlalu sering.
Saran mengenai metode pemantauan SQL Server untuk memahami apa yang terjadi di tingkat db sama-sama disambut.