มันไม่ได้เลวร้ายเสมอไป
แน่นอนมันช่วยให้คุณสามารถอ่านค่าที่ไม่มีข้อผูกมัด (ซึ่งอาจถูกย้อนกลับและไม่เคยมีอยู่ในเชิงตรรกะ) เช่นเดียวกับการอนุญาตให้ปรากฏการณ์เช่นค่าการอ่านหลาย ๆ ครั้งหรือไม่เลย
ระดับการแยกเพียงอย่างเดียวที่รับประกันได้ว่าคุณจะไม่พบความผิดปกติใด ๆ นั้นเป็นแบบอนุกรม / สแนปชอต ภายใต้ค่าการอ่านที่ทำซ้ำได้สามารถพลาดได้ถ้าย้ายแถว (เนื่องจากการอัปเดตคีย์) ก่อนที่การสแกนจะมาถึงแถวนี้ภายใต้ค่าที่อ่านได้แล้วสามารถอ่านได้สองครั้งหากการอัปเดตคีย์ทำให้แถวอ่านก่อนหน้าเลื่อนไปข้างหน้า
ปัญหาเหล่านี้มีแนวโน้มที่จะเกิดขึ้นภายใต้การnolock
อย่างไรเพราะตามค่าเริ่มต้นที่ระดับแยกนี้มันจะใช้การจัดสรรได้รับคำสั่งสแกนเมื่อมันประมาณการมีมากกว่า 64 หน้าที่จะอ่าน เช่นเดียวกับหมวดหมู่ของปัญหาที่เกิดขึ้นเมื่อแถวย้ายไปมาระหว่างหน้าเนื่องจากการปรับปรุงคีย์ดัชนีการสแกนที่ได้รับคำสั่งการจัดสรรเหล่านี้ยังมีความเสี่ยงต่อปัญหาที่เกิดขึ้นกับการแยกหน้า (ที่สามารถพลาดแถวถ้าหน้าใหม่ สแกนแล้วหรืออ่านสองครั้งหากหน้าที่สแกนแล้วถูกแบ่งออกเป็นหน้าถัดไปในไฟล์)
อย่างน้อยสำหรับง่าย (ตารางเดียว) แบบสอบถามก็เป็นไปได้ที่จะกีดกันการใช้สแกนเหล่านี้และได้รับคีย์สั่งสแกนnolock
โดยเพียงแค่การเพิ่มORDER BY index_key
การสืบค้นข้อมูลเพื่อให้Ordered
ทรัพย์สินของผู้เป็นIndexScan
true
แต่หากแอปพลิเคชันการรายงานของคุณไม่ต้องการตัวเลขที่แม่นยำอย่างยิ่งและสามารถทนต่อความน่าจะเป็นที่มากขึ้นของความไม่สอดคล้องดังกล่าวอาจเป็นที่ยอมรับได้
แต่แน่นอนว่าคุณไม่ควรที่จะโยนมันลงไปในข้อความค้นหาทั้งหมดด้วยความหวังว่าจะเป็นปุ่ม "เทอร์โบ" เวทมนตร์ เช่นเดียวกับความน่าจะเป็นที่มากขึ้นของการพบผลลัพธ์ที่ผิดปกติในระดับการแยกหรือไม่มีผลลัพธ์เลย ("ไม่สามารถสแกน NOLOCK ต่อเนื่องจากข้อผิดพลาดการเคลื่อนไหวของข้อมูล") มีบางกรณีที่ประสิทธิภาพnolock
อาจแย่ลงกว่าเดิม