Saturday, May 23, 2009

When we should use ISOLATION (UR) ?

การใช้ ISOLATION แบบ UR (Uncommitted Read) นั้นช่วยให้เราอ่านข้อมูลขึ้นมาจากฐานข้อมูลโดยไม่ต้อง
รอให้มีการ commit transaction ของ transaction ก่อนหน้า ช่วย sql statement ของเราที่มีการใช้ WITH UR
สามารถ retreive ข้อมูลขณะนั้นออกมาได้โดยไม่ต้องเสียเวลารอการ commit จาก transaction ก่อนหน้าและยังช่วย
ลดเปอร์เซ็นต์ในการ lock ภายในระบบลงได้ การนำไปใช้งานทั่วไปมักใช้ในการ

1. แสดงข้อมูลแบบ real time
2. หลีกเลี่ยงการรอข้อมูลที่มีการ lock เพื่อ update ข้อมูล
3. ใช้ในการทำ data  warehouse เพราะการทำ data warehouse โดยธรรมชาติแล้วเป็นการอ่านข้อมูลอย่างเดียว
4. ใช้กับข้อมูลที่ไม่อ่อนไหว (sensitive)

แต่ในข้อดีก็มีข้อเสีย ในบางกรณีนั้นเรามีความจำเป็นที่จะต้องรอให้ transaction ก่อนหน้าทำการ commit ก่อนเช่น

1. เมื่อการคำนวนต่างๆในระบบจำเป็นต้องมีความเท่ากันของตัวเลขในสมการ กล่าวคือถ้าเราใช้การอ่านแบบ WITH UR
ในการอ่านข้อมูลจากฐานข้อมูลขึ้นมาคำนวน จะมีความเป็นไปได้ว่าค่าที่เรานำไปใช้ในการคำนวนอาจไม่ใช้ค่าที่ถูกต้อง
กรณีนี้ ยกตัวอย่าง การกดเงินผ่าน ATM ถ้าเราไม่รอให้ transaction ก่อนหน้า commit ก่อน ก็มีความเป็นไปได้ว่า
ระบบจะอนุญาติให้ผู้ใช้สามารถกดเงินได้มากกว่าที่เป็นจริง
2. เมื่อระบบต้องการความถูกต้องของข้อมูล เช่น จำนวนเงิน, รายการสินค้าที่คงเหลือใน stock เมื่อถึงเวลาปิด stokc และอื่นๆอีกมากมาย
3. เมื่อเราไม่มั่นใจก็พยายามหลีกเลี่ยง เพราะการใช้ WITH UR นี้อาจจะก่อนให้เกิดความเสียหายของข้อมูลได้

No comments: