บทความนี้แนะนำเคล็ดลับสำคัญเพื่อหลีกเลี่ยงการหยุดชะงักใน SQL Servers
แม้ว่า SQL Server ได้เห็นวิวัฒนาการที่ยิ่งใหญ่ในช่วงสองสามปีที่ผ่านมาผู้ใช้ยังคงเผชิญกับสถานการณ์ทางตันอยู่เป็นประจำ ตามหลักการแล้วเซิร์ฟเวอร์ฐานข้อมูลควรสามารถดึงข้อมูลการร้องขอได้หลายครั้ง แต่มักส่งผลให้เกิดการบล็อก ความขัดแย้งที่กระบวนการหนึ่งรอการเปิดตัวของทรัพยากรอื่นเรียกว่าบล็อก แล้วก็มี Deadlocks
ลองนึกภาพสถานการณ์ที่คน ๆ หนึ่งขอให้คนที่สองปล่อยทรัพยากรและคนที่สองกำลังรอให้คนแรกปล่อย ส่งผลให้ทั้งคู่ติดอยู่ในสถานการณ์ชะงักงัน ไม่มีกระบวนการใดที่สามารถดำเนินการต่อได้เนื่องจากทั้งสองถูกล็อกและต้องการให้อีกกระบวนการหนึ่งปล่อยทรัพยากรหรือล็อก
ในขณะที่ทำงานกับ SQL serverการหยุดชะงักเป็นเรื่องปกติธรรมดาและสามารถขัดขวางกระบวนการทั้งหมดได้ เป็นไปไม่ได้ที่จะหลีกเลี่ยงการชะงักงันโดยสิ้นเชิง แต่ก็สามารถลดโอกาสในการเกิดการชะงักงันได้อย่างแน่นอน
ปัญหาการหยุดชะงัก

ควรสังเกตว่าการหยุดชะงักส่งผลโดยตรงต่อประสิทธิภาพและอาจหยุดการประมวลผลฐานข้อมูล
1. ให้คำสั่งเหมือนเดิม
การติดตาย (Deadlock) มักเกิดขึ้นหากทรัพยากรไม่ได้รับการประมวลผลตามลำดับที่กำหนดไว้อย่างชัดเจน เพื่อลดปัญหาการติดตาย ธุรกรรมที่เกิดขึ้นพร้อมกันทั้งหมดควรเข้าถึงวัตถุตามลำดับที่กำหนดไว้อย่างชัดเจน ผู้ดูแลระบบฐานข้อมูล (DBA) ควรออกแบบชุดกฎที่ชัดเจนสำหรับการเข้าถึงวัตถุในฐานข้อมูล โดยปกติแล้ว โปรแกรมตรวจสอบการล็อก (Lock Monitor) จะตรวจสอบการติดตาย และเมื่อตรวจพบ จะเลือกเหยื่อของการติดตายหนึ่งรายและยกเลิกธุรกรรมนั้น ดังนั้น การล็อกทั้งหมดจะถูกปลดออก และเซสชันก่อนหน้าจะสามารถดำเนินการต่อได้ เหยื่อของการติดตายจะถูกเลือกโดยพิจารณาจากลำดับความสำคัญของการติดตายที่กำหนดโดยเซิร์ฟเวอร์ หรือต้นทุนในการยกเลิกธุรกรรม
2. ข้อ จำกัด ระหว่างการทำธุรกรรม
คุณสามารถ จำกัด ไม่ให้ผู้ใช้ป้อนข้อมูลประเภทใดก็ได้เมื่อธุรกรรมกำลังประมวลผลและคุณอาจอัปเดตข้อมูลก่อนทำธุรกรรมเพื่อหลีกเลี่ยงการชะงักงัน นอกจากนี้พยายามรักษาการโต้ตอบของผู้ใช้ให้อยู่ในระดับต่ำสุดเนื่องจากมีผลต่อความเร็ว ตามหลักการแล้วธุรกรรมควรสั้นและรวดเร็วเพื่อหลีกเลี่ยงการชะงักงัน แอปพลิเคชันควรได้รับการออกแบบในลักษณะที่จับล็อคได้โดยใช้เวลาน้อยที่สุดและคลายออกโดยเร็วที่สุด
3. คำแนะนำ NOLOCK
เมื่อมีคนเรียกใช้แบบสอบถามกับตารางในระดับการแยกเริ่มต้นของ SQL ตารางจะถูกล็อกและการสืบค้นถัดไปต้องรอการเผยแพร่ คำแนะนำ NOLOCK มีประโยชน์ในสถานการณ์เช่นนี้เนื่องจากช่วยให้การลบล้างการล็อกตารางและการสืบค้นอื่น ๆ เข้าถึงได้ง่าย
4. ใช้ Bound Connections
หากแอปพลิเคชันเดียวกันสามารถเปิดการเชื่อมต่อสองรายการขึ้นไปซึ่งสามารถทำงานร่วมกันได้ก็จะไม่ทำให้เกิดการชะงักงัน นั่นเป็นเหตุผลที่แนะนำให้ใช้การเชื่อมต่อแบบผูก
การหยุดชะงักไม่ได้เป็นเพียงความยุ่งยากเพียงอย่างเดียวที่คุณอาจพบในขณะที่ทำงานกับไฟล์ SQL Server ฐานข้อมูล. ในความเป็นจริงเหตุการณ์ของ sql เสียหาย มีแนวโน้มที่จะทำให้คุณเศร้าโศก เพื่อหลีกเลี่ยงสถานการณ์การสูญเสียข้อมูลลงทุนในเครื่องมือการกู้คืนที่มีประสิทธิภาพเช่น DataNumen SQL Recovery.
บทนำผู้เขียน:
Victor Simon เป็นผู้เชี่ยวชาญด้านการกู้คืนข้อมูลใน DataNumen, Inc. ซึ่งเป็นผู้นำระดับโลกด้านเทคโนโลยีการกู้คืนข้อมูล ได้แก่ การกู้คืน mdb และผลิตภัณฑ์ซอฟต์แวร์กู้คืน sql ดูข้อมูลเพิ่มเติมได้ที่ https://www.datanumen.com/