ฉันมีโค้ดที่ทำหน้าที่แทรกลงในตารางที่มีความผิดปกติอย่างมาก ตารางมีจำนวนคอลัมน์ตั้งแต่ ~ 100 ถึง 300+ นี่คือ SQL Server 2008 R2 ทำงานบน Windows Server 2008
แต่ละแทรกประกอบด้วยการแทรกจำนวนตารางภายใต้การทำธุรกรรมเดียวกัน เม็ดมีดบางรุ่นจะถูกแบตช์โดย NHibernate แต่บางอันไม่สามารถทำได้ แต่ทั้งหมดนั้นอยู่ภายใต้ธุรกรรมเดียวกันอย่างไรก็ตาม
เมื่อฉันทำการแทรกประมาณ 500 ครั้งโดยการเรียกรหัสที่มีการแทรกซ้ำหลายครั้งฉันจะได้รับค่าเฉลี่ย ~ 360 ms
บิตแปลกคือเมื่อฉันเรียกใช้รหัสทดสอบพร้อมกันโดยใช้ 4 กระบวนการ (exe เดียวกันทำงานจาก 4 พร้อมรับคำสั่งที่แตกต่างกันภายใต้ windows server 2008) ประสิทธิภาพการแทรกต่อการโทรดีขึ้นมาก ฉันเห็นการระเบิดที่ความเร็ว 90 มิลลิวินาที (เกือบ X4 เร็วขึ้น) ฉันวัดเวลาการแทรกจากโค้ด
เนื่องจากกระบวนการทั้งสี่ไม่รู้อะไรเกี่ยวกับกันและกันฉันจึงสมมติว่ามันมีบางอย่างที่เกี่ยวข้องกับ SQL Server แต่ฉันไม่รู้ว่าทำไม ฉันต้องการทราบว่าทำไมสิ่งนี้ถึงเกิดขึ้นและหากมีการกำหนดค่าใด ๆ ที่จะทำให้ฉันได้รับประสิทธิภาพเดียวกันเมื่อส่วนแทรกไม่บ่อย
คำแนะนำเกี่ยวกับวิธีการตรวจสอบ SQL Server เพื่อทำความเข้าใจว่าเกิดอะไรขึ้นที่ระดับ db ยินดีอย่างเท่าเทียมกัน