ฉันค้นคว้าความแตกต่างระหว่าง SQL Server READ COMMITTED SNAPSHOT
และSNAPSHOT
ระดับการแยกและพบกับทรัพยากรต่อไปนี้:
การเลือกระดับการแยกตามเวอร์ชันของแถว
สำหรับแอปพลิเคชันส่วนใหญ่ขอแนะนำให้อ่านการแยกโดยใช้การกำหนดเวอร์ชันของแถวมากกว่าการแยกสแน็ปช็อตด้วยเหตุผลต่อไปนี้:
มันใช้พื้นที่ tempdb น้อยกว่าการแยกสแน็ปช็อต
การแยกสแนปชอตมีความเสี่ยงที่จะอัปเดตความขัดแย้งที่ไม่สามารถใช้งานได้กับการอ่านแบบแยกที่มุ่งมั่นโดยใช้การกำหนดเวอร์ชันของแถว เมื่อธุรกรรมที่รันภายใต้การแยกสแน็ปช็อตอ่านข้อมูลที่ถูกแก้ไขโดยธุรกรรมอื่นการอัพเดตโดยธุรกรรมสแน็ปช็อตไปยังข้อมูลเดียวกันทำให้เกิดความขัดแย้งในการอัปเดตและธุรกรรมจะสิ้นสุดและย้อนกลับ นี่ไม่ใช่ปัญหาของการแยกการอ่านโดยใช้การกำหนดเวอร์ชันของแถว
ฉันค่อนข้างใหม่สำหรับหัวข้อเหล่านี้ แต่ดูเหมือนว่าฉันไม่สามารถเข้าใจหัวข้อย่อยทั้งสองจากลิงก์ด้านบน
ทำไมพื้นที่ tempdb จะแตกต่างกันสำหรับโหมดเหล่านี้ มีร้านหนึ่งที่ควบคุมเวอร์ชันย่อยได้มากกว่าร้านอื่นหรือไม่
ทำไมการแยกสแน็ปช็อตจึงมีความเสี่ยงที่จะอัปเดตข้อขัดแย้ง