ไม่แน่ใจว่าทำไมคุณถึงไม่ห่อธุรกรรมทางการเงินในการทำธุรกรรมฐานข้อมูล (เช่นเมื่อคุณโอนเงินจากบัญชีหนึ่งไปยังอีกบัญชีหนึ่ง - คุณไม่ได้ทำธุรกรรมด้านหนึ่งในแต่ละครั้ง - นี่คือเหตุผลว่าทำไมธุรกรรมที่ชัดเจน) แม้ว่ารหัสของคุณจะถูกนำไปใช้ในการทำธุรกรรมทางธุรกิจ แต่ดูเหมือนว่าฐานข้อมูลการทำธุรกรรมทั้งหมดมีแนวโน้มที่จะทำการย้อนกลับโดยปริยายในกรณีที่เกิดข้อผิดพลาดหรือความล้มเหลว ฉันคิดว่าการสนทนานี้เป็นไปในหัวของคุณ
หากคุณมีปัญหาในการล็อคให้ใช้เวอร์ชันและล้างข้อมูลโค้ดของคุณ
ไม่มีการล็อคไม่เพียง แต่คืนค่าที่ไม่ถูกต้อง แต่จะคืนค่าระเบียนที่เป็นค่าแฝง
มันเป็นความเข้าใจผิดทั่วไปที่ทำให้การสืบค้นทำงานได้เร็วขึ้น หากไม่มีการล็อกการเขียนบนโต๊ะมันจะไม่สร้างความแตกต่างใด ๆ หากมีการล็อกบนตารางอาจทำให้แบบสอบถามเร็วขึ้น แต่มีการล็อกเหตุผลที่ถูกคิดค้นขึ้นตั้งแต่แรก
ในความเป็นธรรมต่อไปนี้เป็นสถานการณ์พิเศษสองข้อที่อาจมีประโยชน์จาก nolock
1) ฐานข้อมูลเซิร์ฟเวอร์ sql ก่อนปี 2005 ที่ต้องการเรียกใช้การค้นหาแบบยาวกับฐานข้อมูล OLTP แบบสดซึ่งอาจเป็นวิธีเดียวเท่านั้น
2) แอปพลิเคชันที่เขียนไม่ดีซึ่งล็อคการบันทึกและส่งคืนการควบคุมไปยัง UI และผู้อ่านจะถูกบล็อกอย่างไม่มีกำหนด Nolock มีประโยชน์ที่นี่หากแอปพลิเคชั่นไม่สามารถแก้ไขได้ (บุคคลที่สามเป็นต้น) และฐานข้อมูลเป็นแบบ pre-2005 หรือไม่สามารถเปิดเวอร์ชันได้