สรุปคํ ปคําบรรยาย าบรรยาย วิชา ชา
Advanced Database Systems
บรรยายโดย
รศ.ดร. ศุภมิ ภมิตร ตร จิตตะยโศธร ตตะยโศธร
ภาคเรียนที ่ ่ ยนที 1/2549 คณะเทคโนโลยีสารสนเทศ สารสนเทศ สถาบันเทคโนโลยี นเทคโนโลยีพระจอมเกล พระจอมเกลาเจ าเจาคุ าคุณทหารลาดกระบั ณทหารลาดกระบัง
Advanced Database Systems 1/49-IS20.2
สารบัญ Transaction Processing Concept ................... ............................ ................... .................... ................... ................... ............. ...5 5 ACID Properties ของ Transaction.................................... Transaction.............................................................. ..................................................... ..................................................... ..................................7 ........7 Transaction State.................................................... State............................................................................... ..................................................... ......................................................... ............................................9 .............9
Recovery ................... ............................ ................... .................... ................... ................... .................... ................... ................... ....................9 ..........9 Failure Classification .................................................. ............................................................................ ..................................................... .......................................................... .......................................9 ........9 Transaction Recovery Problem Statement......................................... Statement.................................................................... ..................................................... ........................................11 ..............11
หลักการ กการ Transaction Recovery .................................................. ............................................................................ ..................................................... ..................................................11 .......................11 Idempotent.......................... Idempotent .................................................... ..................................................... ..................................................... ........................................................ ...................................................12 .....................12 ............................................................................ .................................................... ........................................................ ................................. ...13 13 อะไรจะเกิดขึ ดขึ ้ ้นเมื ่ ่ นเมือ BIJ เต็ม .................................................. ............................................................................ .................................................... ........................................................ ................................. ...13 13 อะไรจะเกิดขึ ดขึ ้ ้นเมื ่ ่ นเมือ AIJ เต็ม .................................................. ประเภทของ Log-based recovery .................................................... ............................................................................... ..................................................... .............................................13 ...................13 Technique......................................................... .................................................. .......................................15 ..............15 แยกประเภทตาม Database Modification Technique................................ Check point............................................... point......................................................................... ..................................................... ..................................................... ...................................................... .............................. 16
Buffer Management .................... ............................. ................... .................... ................... ................... .................... ...................18 .........18 Log-record Buffering................................ Buffering........................................................... ..................................................... ..................................................... .......................................................19 ............................19 Operating System Role in Buffer Management......................... Management ................................................... .................................................... .................................................19 .......................19 Shadow Paging .................................................. ............................................................................ ..................................................... ......................................................... ..............................................21 ................21
Database Backup Concept .................... ............................. ................... .................... ................... ................... ...................22 .........22 Database Export/Import Export/Import........................ .................................................. ..................................................... ..................................................... ........................................................ ................................. ...23 23
Concurrent Execution .................. ............................ .................... ................... ................... .................... ................... .................24 ........24 Conflict Serializability....................................... Serializability.................................................................. ..................................................... .................................................... ..............................................27 ....................27 View Serializability .................................................... .............................................................................. ..................................................... ......................................................... .....................................27 .......27 Recoverability.................................................... Recoverability......................... ..................................................... ..................................................... ......................................................... ..............................................29 ................29 Cascadeless Schedule ................................................. ........................................................................... ..................................................... ......................................................... .....................................30 .......30 Levels of consistency............................ consistency...................................................... ..................................................... ..................................................... ........................................................ ................................. ...30 30
2
Advanced Database Systems 1/49-IS20.2 control.................................................................. ..................................................... ..................................................... ............................. 31 ปญหา ญหา 4 ขอใน อใน Concurrency control.......................................
Concurrency Control........................... Control.................................... ................... .................... ................... ................... .................... ............ 33 Lock-based Protocol ................................................... ............................................................................. ..................................................... ......................................................... .....................................33 .......33 2-Phase Locking Protocol .................................................... .............................................................................. ..................................................... .......................................................34 ............................34
Multiple Granularity ................................................... ............................................................................. ..................................................... ......................................................... .....................................35 .......35 Weak Level of Consistency ................................................. ............................................................................ ..................................................... ......................................................37 ............................37 Timestamp-Base Protocol.............................. Protocol........................................................ ..................................................... ..................................................... ..................................................37 ........................37 Timestamp-Ordering Timestamp-Ordering Protocol .................................................. ............................................................................ ..................................................... ..................................................38 .......................38 Thomas’ Write Rule ................................................... ............................................................................. ..................................................... ......................................................... .....................................39 .......39 Multiversion Timestamp Ordering .................................................... .............................................................................. ..................................................... .........................................39 ..............39 Multiversion 2-phase locking ................................................... ............................................................................. .................................................... ..................................................40 ........................40
Query Processing ................... ............................ ................... .................... ................... ................... .................... ................... .............. .....41 41 Relational algebra .................................................. ............................................................................. ..................................................... ......................................................... ..........................................42 ...........42
ตัวอย วอยาง าง Database statistics.......................... statistics .................................................... .................................................... ..................................................... .......................................................45 ............................45 Selection Operation .................................................... .............................................................................. ..................................................... ......................................................... .....................................45 .......45 A1.
Linear search .................................................... .............................................................................. ..................................................... .......................................................45 ............................45
A2.
Binary search.............................. search........................................................ ..................................................... ..................................................... ..................................................45 ........................45
A3.
Primary index, equality on key ................................................... .............................................................................. ..................................................... ............................ 46
A4.
Primary index, equality on non-key ................................................. ............................................................................ .................................................47 ......................47
A5.1
Secondary index, equality on key .................................................... .............................................................................. .................................................47 .......................47
A5.2
Secondary index, equality on non-key ............................................... ........................................................................ ...............................................47 ......................47
Join Operation............................................... Operation.......................................................................... ..................................................... ......................................................... ...................................................48 ....................48 1.
N ested-Loop Join.............................................. Join........................................................................ ..................................................... ..................................................... ................................ ......48 48
2.
Block Nested-Loop Join ..................................................... ............................................................................... ..................................................... .........................................49 ..............49
3.
Indexed Nested-Loop Join..................................... Join............................................................... .................................................... ..................................................... ............................. 49
4.
Hash Join ..................................................... ............................................................................... ..................................................... ........................................................ .....................................51 ........51
Hash Index.......................... Index .................................................... ..................................................... ..................................................... ........................................................ ...................................................52 .....................52
3
Advanced Database Systems 1/49-IS20.2
Temporal Database ................... ............................. ................... ................... .................... ................... ................... .................... ............ 53 Valid-Time State Table................................................... Table.............................................................................. ..................................................... ........................................................ ................................. ...53 53 Duplication Concept ................................................... ............................................................................. ..................................................... ......................................................... .....................................54 .......54
นิยามของ ยามของ Temporal Database .................................................... .............................................................................. .................................................... ..................................................55 ........................55 Temporal Join .................................................... .............................................................................. ..................................................... ......................................................... ..............................................57 ................57 Modifying Valid-Time State Table.................................................... Table.............................................................................. ..................................................... .........................................59 ..............59 Current Delete.............................. Delete........................................................ ..................................................... ..................................................... ........................................................ ..........................................60 ............60 Current Update.............................................. Update......................................................................... ..................................................... ..................................................... ...................................................61 ........................61 Sequence Insert....................... Insert .................................................. ..................................................... ..................................................... ......................................................... ..............................................61 ................61 Sequence Delete................................................. Delete........................................................................... ..................................................... ......................................................... ..............................................61 ................61 Sequence Update ................................................... .............................................................................. ..................................................... ........................................................ ..........................................63 ............63 Temporal SQL (Back in the Pens).......................... Pens) ..................................................... ..................................................... ..................................................... .........................................64 ..............64 Transaction-Time State Table................................. Table........................................................... ..................................................... ..................................................... .........................................65 ...............65 Bitemporal Table ................................................... .............................................................................. ..................................................... ........................................................ ..........................................66 ............66
4
Advanced Database Systems 1/49-IS20.2
Transaction Processing Concept นิยามของ ยามของ Transaction จะแบงออกได งออกไดเป เปน 3 ยุค ยุคแรก คแรก คือ File ที ่ ่ทีเก็เก็บรายการเปลี ่ ่ บรายการเปลียนเแปลง ยนเแปลง (Transaction File) จากแฟมข มขอมู อมูลหลั ลหลัก (Master file) ซึ ่ ่ซึงเป งเปนระบบ นระบบ Sequential File มีการ การ sort ไวอย อยางเรี างเรียบร ยบรอย อย ยุคที ่ ่ คทีสอง สอง เริ ่ ่มมี มมีการใช การใช Disk ซึ ่ ่งจะไม งจะไมได ไดเป เปน Sequential File แลว Transaction จะหมายถึงแต งแตละกิ ละกิจกรรมที ่ ่ จกรรมทีกระทํ กระทําบน าบน Data File ยุคป คปจจุ จจุบับัน A Transaction is a logical unit of work in which integrity constraint to be violated. (LUW)
กลุ มของคํ มของคําสั าสั ่ ่งในภาษาฐานข งในภาษาฐานขอมู อมูลในระดั ลในระดับ Logical ที ่ ่ทียอมให ยอมใหมีมีการละเมิ การละเมิด integrity constraint เปนการภายในได นการภายในได ซึ ่ ่ง Integrity constraint กฏที ่ ่ กฏทีบับังคั งคับความถู บความถูกต กตองของฐานข องของฐานขอมู อมูล รวมถึง business rule ตางๆ างๆ ดวย วย โดยที ่ ่ โดยทีจะเก็ จะเก็บอยู บอยู ใน ใน Database และบังคั งคับใช บใชโดย โดย DBMS ตัวอย วอยาง าง กคันในบริ นในบริษัษัทจะต ทจะตองมี องมีพนั พนักงานรั กงานรับผิ บผิดชอบ ดชอบ R : รถทุกคั เหตุการณ การณ มีรถคั รถคันใหม นใหมเข เขามาในบริ ามาในบริษัษัท สิ ่ ่สิงที งที ่ตองทํ องทําคื าคือ นใหม งจะไมมีมีทาง ทาง insert ไดเนื ่ ่ เนืองจากผิ องจากผิดกติ ดกติกา กา) Insert รถคันใหม (ซึ ่ ่งจะไม Assign พนักงานรั กงานรับผิ บผิดชอบรถ ดชอบรถ เราตองทํ องทําทั ้ ้ าทังสองกิ งสองกิจกรรมนี ้ ้ จกรรมนีให ใหเป เปนหน นหนวยเดี วยเดียวกั ยวกัน Begin transaction Synchronization Synchronization Point (จุดเริ ่ ่ ดเริมต มตน/จุดสุ ดสุดท ดทายของ ายของ Transaction) นใหม Insert รถคันใหม กละเมิด R ถูกละเมิ กงานรับผิ บผิดชอบรถ ดชอบรถ Assign พนักงานรั 1
1
End transaction R2:
Database
สอดคลองตาม องตาม R
1
การโอนเงินจะต นจะตองไม องไมมีมียอดเงิ ยอดเงินหายไปจากระบบ นหายไปจากระบบ เหตุการณ การณ โอนเงินจาก นจาก A ไปยัง B จํานวน านวน x บาท สิ ่ ่สิงที งที ่ตองทํ องทําคื าคือ Begin Transaction
ถอน A จํานวน านวน x บาท ฝาก B จํานวน านวน x บาท End Transaction
R2
Database
ถูกละเมิ กละเมิด
สอดคลองตาม องตาม R
2
5
Advanced Database Systems 1/49-IS20.2 1 Transaction มี 1 คําสั าสั ่ ่งหรื งหรือมากกว อมากกวาก็ าก็ได ได
เหตุการณ การณ
เลือดของคนในประเทศจาก อดของคนในประเทศจาก A เปน Z Update หมู เลื
Begin Transaction Update A Z End Transaction
ในระหวางปฏิ างปฏิบับัติติงานจะมี งานจะมีทัท ้ ้ัง A และ Z อยู ใน ใน Database Database สอดคลองกั องกัน
กรณีที ่ ่ทีมีมการ กี าร Update ขอมู อมูลที ลที ่ ่เป เปน Volume transaction กระทบ 1 ลาน าน rows กรณีที ่ ่ทีวิว ่ ่งไปได งิ ไปได 9 แสน Rows แลวเจออุ วเจออุปสรรค ปสรรค Transaction ไปตอไม อไมได ได ทําให าใหมีมการ กี าร Rollback ซึ ่ ่ซึงอาจจะทํ งอาจจะทําให าใหเสี เสียงานได ยงานได อยากทราบวา solution คืออะไร ออะไร (A) ควรแบงเป งเปน Transaction ยอยๆ อยๆ งเปนจุ นจุดเริ ดเริ ่ ่มต มตนและลงท นและลงทาย าย Transaction จะมีอยู อยู 3 ตัวคื วคือ Synchronization Synchronization point ในภาษา SQL ซึ ่ ่งเป นการยืนยั นยันการเปลี ่ ่ นการเปลียนแปลงตั ้ ้ ยนแปลงตังแต งแต Sync point ลาสุ าสุดจนถึ ดจนถึงจุ งจุด commit 1. Commit work เปนการยื เปนเหมื นเหมือนคํ อนคําสั าสัญญาว ญญาวาถ าถาหลั าหลังจากนั ้ ้ งจากนันข นขอมู อมูลจะไม ลจะไมหายแน หายแน 2. Rollback work เปนการยกเลิ นการยกเลิกการเปลี ่ ่ กการเปลียนแปลงตั ้ ้ ยนแปลงตังแต งแต Sync point ลาสุ าสุดจนถึ ดจนถึงจุ งจุด Rollback าเปน autocommit on นี ่ ่นีเสร็ เสร็จหนึ ่ ่ จหนึงคํ งคําสั าสั ่ ่งก็ งก็จะ จะ commit เลย 3. Set autocommit off - ถาเป แตถถาเป า เปน autocommit off เสร็จ แตละคํ ละคําสั าสั ่ ่งจะยั งจะยังไม งไม commit จะ commit ก็ตตอเมื ่ ่ อ เมือ มีคํคาสั าํ สั ่ ่ง commit อยางชั างชัดเจน ดเจน ตัวอย วอยาง าง (Q)
On error rollback set autocommit off update acc set amount=amount - x where acc# = ‘A’ update acc set amount=amount + x where acc# = ‘B’ commit
เราตองแยกการ องแยกการ Commit กับการถ บการถายโอน ายโอน data จาก DB Buffer ลงสู DB Space เลย Transaction จะเลนกั นกับข บขอมู อมูลใน ลใน DB Buffer เทานั านั ้ ้น (Q) ทุกครั ้ ้ กครังที งที ่ ่มีมีการ การ commit มีการ การ save การเปลี ่ ่ การเปลียนแปลงไปยั ยนแปลงไปยัง DB Space หรือไม อไม (A) ไม – – จะมี จะมีการ การ save เมื ่ ่ เมือไม อไมมีมใครใช ใี ครใชแล แลว หรือ buffer เต็ม ตัวอย วอยาง าง Update หมู เลืเลือดจาก อดจาก A -> Z 20 ลาน าน row ระหวางวิ างวิ ่ ่ง จะมีการถ การถาย าย Data ลง DB Space transaction ก็จะมี เนื ่ ่องจาก องจาก Buffer เต็ม ดังนั ้ ้ งนันการ นการ Save ลง DB Space อยู อยูกกอนหรื อนหรือหลั อหลัง commit ก็ได ได
6
Advanced Database Systems 1/49-IS20.2 ACID Properties ของ Transaction
คณสมบั ณุ สมบัติติ 4 ประการคือ Transaction มีคุ 1.
Atomicity : คําสั าสั ่ ่งทั ้ ้ งทังหลายใน งหลายใน transaction นั ้ ้นันถ นถาสํ าสําเร็ าเร็จต จตองสํ องสําเร็ าเร็จด จดวยกั วยกัน ถา Fail ตอง อง Fail ดวยกั วยกันทั ้ ้ นทังหมด งหมด
หมายเหตุ Transaction ทั ้ ้ทังหลายจะเป งหลายจะเปนไปตาม นไปตาม Atomicity นี ้ ้นียกเว ยกเวน long duration transaction Long duration transaction หมายถึง Transaction ที ่ ่ ทีมีมมนุ มี นุษย ษยเข เขามาเกี ่ ่ ามาเกียวข ยวของ (human intervention) โดยที ่ ่ โดยทีจะมี จะมีการนํ การนํา ามาชวย วย nested transaction เขามาช **** ไมควรทํ ควรทํา transaction processing ใน mode interactive SQL**** Begin TX Begin savepoint : Commit savepoint Begin savepoint : Commit savepoint End TX
นี ้ ้นีเป เปนหน นหนาที าที ่ ่โดยตรงของ โดยตรงของ DBMS *** Consistency : การปฏิบั บัติติ TX โดยอิสระ สระ จะตองรั องรักษาความถู กษาความถูกต กตองของฐานข องของฐานขอมู อมูลตาม ลตาม Integrity rule าที ่ ่สสวนใหญ ว นใหญจะอยู จะอยูทีท ่ ่โปรแกรมเมอร โี ปรแกรมเมอร) โปรแกรมเมอร จะตองใส องใส begin ถกต ูกตอง อง ตัวอย วอยางโอนเงิ างโอนเงิน (หนาที begin – end ใหถู *** Atomicity
2.
Begin TX
ถอน A Commit TX Begin TX
ถือว อวาไม าไม Consistency
ฝาก B Commit TX *** Consistency
นีนี ้ ้เป เปนหน นหนาที าที ่ ่ของโปรแกรมเมอร ของโปรแกรมเมอร 60 % และ DBMS 40 % ***
7
Advanced Database Systems 1/49-IS20.2 3.
Isolation : TX ที ่ ่ ทีวิว ่ ่งร งิ รวมกั วมกันในช นในชวงเวลาเดี วงเวลาเดียวกั ยวกันจะต นจะตองไม องไมรบกวนกั รบกวนกัน
ตัวอย วอยาง าง ถามี ามี T และ T วิ ่ ่วิงร งรวมกั วมกัน j
i
|------------- T i-------------|
Concurrent schedule
|------------- T j -------------|
สิ ่ ่สิงที งที ่ ่เกิเกิดขึ ดขึ ้ ้นจะเป นจะเปนไปได นไปได 2 กรณีคืคอื 1)
|------------- T i -------------|------------- T j -------------|
2)
|------------- T j -------------|------------- T i -------------|
Serial schedule
และ T วิ ่ ่ง concurrent แตให ใหผลลั ผลลัพธ พธเหมื เหมือนกั อนกันวิ ่ ่ นวิง Serial เราเรียกว ยกวา Concurrent Serializable schedule สรุปว ปวากิ ากิจกรรมที ่ ่ จกรรมที T ทําแต าแต T ไมเห็ เห็น แตถถาอยากให าอยากใหเห็ เห็นโปรแกรมเมอร นโปรแกรมเมอรก็กสามารถทํ ็สามารถทําได าได
T i
j
j
i
(Q) T 1 = sum account T 2 =
เปดบั ดบัญชี ญชีใหม |----------------------- T 1 -----------------------| |------------- T 2-------------|
(A) (Q)
ถามวาตามหลั าตามหลัก Isolation แลวผลจากการ วผลจากการ sum account จะมีรายการของ รายการของ บัญชี ญชีใหมหรื หรือไม อไม ตามหลัก isolation แลว T ไมควรเห็ ควรเห็นรายการของ นรายการของ T2 ผลลัพธ พธควรจะมี ควรจะมีลัลักษณะ กษณะ T นํา T ตาม จากคําถามข าถามขางต างตน ถาใช าใช Row-level locking ซึ ่ ่งเป งเปนการ นการ lock ที ่ ่ละ ละ row ที ่ ่เราต เราตองการทํ องการทํางาน างาน เมื ่ ่ เมือใช อใชเสร็ เสร็จก็ จก็ปลด ปลด Lock ถามวา บัญชี ญชีใหม ใหมทีท ่ ่ี insert โดย T จะเขาไปเป าไปเปนผลลั นผลลัพธ พธของ ของ T หรือไม อไม ตอบวาเห็ าเห็น ซึ ่ ่งอธิ งอธิบายได บายไดววาจาก าจาก row ทั ้ ้ทังหมด งหมด 10 ลาน าน row จะถูก lock เพียง ยง 1 row เทานั านั ้ ้น ดังนั ้ ้ งนันในขณะเดี นในขณะเดียวกั ยวกันก็ นก็สามารถที สามารถที ่ ่จะโอนเงิ จะโอนเงินหรื นหรือทํ อทํารายการอื ่ ่ ารายการอืนๆ นๆ ได หมายเหตุ แตในยุ ในยุคนี ้ ้ คนีถถามี ามีการ การ Sum แบบนี ้ ้ แบบนี DBMS จะทําการ าการ lock table ซึ ่ ่ซึงการ งการ insert ก็จะทํ จะทําไม าไมได ได นอกจากนั ้ ้ นอกจากนัน DBMS ที ่ ่ทีฉลาดบางตั ฉลาดบางตัวเช วเชนถ นถามี ามีการ การ sum เฉพาะสาขาบางเขน DBMS จะ lock เฉพาะ row ของสาขาบางเขน ซึ ่ ่ซึงสาขาอื ่ ่ งสาขาอืนจะทํ นจะทํารายการได ารายการได การทํางานคื างานคือ DBMS จะเขาไป าไป lock index entry แตสํสาหรั ําหรับ Oracle จะใช timestamp เขามาช ามาชวยทํ วยทําให าใหคนที คนที ่ ่ sum ก็ sum ไป คนที ่ ่ insert ก็ insert ไดโดยไม โดยไมมีมการ กี าร 1
1
2
(A)
2
1
wait
นี ้ ้นีจัจัดการโดย ดการโดย DBMS *** เมือ TX ปฏิบับัติตเสร็ เิ สร็จแล จแลวการเปลี ่ ่ วการเปลียนแปลงนั ยนแปลงนั ้ ้นจะต นจะตองอยู องอยูถาวร ถาวร นั ่ ่นันคื นคือหลั อหลังจากที งจากที ่ ่มีมีการ การ commit แลว Durability : เมื ่ ่ ไมววาจะเกิ า จะเกิดอะไรขึ ้ ้ ดอะไรขึน DBMS เปนผู น ผูรัรับผิ บผิดชอบ ดชอบ *** Isolation
4.
8
Advanced Database Systems 1/49-IS20.2 Transaction State
1. 2. 3. 4. 5.
สถาะของ TX มีอยู อยู 5 สถานะคือ Active : คําสั าสั ่ ่งใน งใน TX กําลั าลังถู งถูกปฏิ กปฏิบับัติตงานอยู งิ านอยู าสั ่ ่งสุ งสุดท ดทายใน ายใน TX ถูกปฏิ กปฏิบับัติตแล แิ ลว Partially committed : คําสั Failed : TX ไมสามารถถู สามารถถูกปฏิ กปฏิบับัติติตตอไปได อ ไปได Aborted : TX ถูก rollback แลว Committed : TX ยืนยั นยันการเปลี ่ ่ นการเปลียนแปลงเรี ยนแปลงเรียบร ยบรอยแล อยแลว ถามี ามีการ การ lock จะมีการปลด การปลด lock ที ่ ่ทีจุจดุ commit ทัทั ้ ้ง Partially committed และ จะ Failed ได Active สามารถที ่ ่จะ
Partially Committed
Committed
มีการเปลี การเปลี ่ ่ยนจาก ยนจาก Partially committed ไป เปน committed เร็วเท วเทาไหร าไหรก็กจะยิ ่ ่ จ็ ะยิงดี งดี
Active
Failed
Aborted
Recovery เราจะ ทิ ้ ้งบทที ่ ่ งบทที 15 ไวแค แคนี ้ ้นีกกอนไปดู อนไปดูเรืเรื ่ ่อง อง Recovery ในบทที ่ ่ 17 กันก นกอน อน Failure Classification
1.
2.
3.
การ Fail จะมีดดวยกั ว ยกัน 3 รูปแบบคื ปแบบคือ Transaction Failure: เปนการ นการ Failure เฉพาะ TX นั ้ ้นัน ทําใหไม ไมสามารถปฏิ สามารถปฏิบับัติติตตอไปอี อ ไปอีกได กไดซึ ่ ่ซึงจะ งจะ Rollback ในที ่ ่สุสุด - Logical Error: เกิดจาก ดจาก code program ไมถูถูก, input ผิด format ดจาก Database System software อยู อยูในสถาะอั ในสถาะอันไม นไมพึพงประสงค งึ ประสงค - System Error: เกิดจาก เชน Deadlock, log file เต็ม System Crash : คือพั อพังทั งทั ้ ้งระบบทํ งระบบทําใหระบบไม ระบบไมสามารถทํ สามารถทํางานต างานตอไปได อไปได ซึ ่ ่งอาจจะเกิ งอาจจะเกิดจาก ดจาก Hardware, Software malfunction บางตัวมี วมีปปญหา ญ หา โดยที ่ ่ โดยที Disk ไมได ได crash เชน power fail, main board เสีย, network card พัง, อในบาง DBMS เมื ่ ่ เมือ buffer มีการขยายขนาดจนเต็ การขยายขนาดจนเต็มทํ มทําให าใหแฮงค แฮงคไป ไป ซึ ่ ่ซึงเป งเปน Bug ของ software Memory พัง หรือในบาง ในแบบที 1 และ 2 นี ้ ้นีมนุ มนุษย ษยไม ไมจํจาเป าํ เปนต นตองเข องเขามาเกี ่ ่ ามาเกียวข ยวของในส องในสวนของ วนของ Recovery Failure ในแบบที ่ ่ Disk Crash: Disk มีป ปญหา ญหา ซึ ่ ่ซึงการ งการ recovery จะตองมี องมีมนุ มนุษย ษยเข เขามาเกี ่ ่ ามาเกียวข ยวของดวย วย
9
Advanced Database Systems 1/49-IS20.2 Storage Structure
บแลวหาย วหาย 1. Volatile storage : ไฟดับแล 2. Nonvolatile storage : ไฟดับไม บไมหาย หาย DB Space จะถูกเก็ กเก็บไว บไวใน ใน nonvolatile storage
ไมมีมวัวี ันหาย นหาย log file จะถูกเก็ กเก็บไว บไวใน ใน stable storage ซึ ่ ่ซึงถ งถา log file 3. Stable storage : เปน Storage ที ่ ่ไม เสียหายจะ ยหายจะ Recover ไมได ได Data Access Physical block: block ที ่ ่อยู อยูใน ใน disk ซึ ่ ่ซึงหมายถึ งหมายถึง OS block Logical block: database block
ตัวอย วอยาง าง Select * from S where S# = S1
จะได Output 1 row แต DBMS หยิบขึ บขึ ้ ้นมา นมา 1 database block ซึ ่ ่งอาจจะประกอบไปด งอาจจะประกอบไปดวยหลาย วยหลาย OS block ก็ได ได งการถายข ายขอมู อมูลระหว ลระหวาง าง DB Buffer กับ DB space Input และ Output หมายถึงการถ
ซึ ่ ่ง Input และ output นั ้ ้นันจะเป นจะเปนการดู นการดูแลร แลรวมกั วมกันระหว นระหวาง าง OS และ DBMS และอยู นอกเหนื นอกเหนือการควบคุ อการควบคุมของ มของ application program แตอาจจะเกี อาจจะเกี ่ ่ยวข ยวของกั องกับ input ได Read และ Write เปนการถ นการถายโอนข ายโอนขอมู อมูลระหว ลระหวางโปรแกรมกั างโปรแกรมกับ DB Buffer ซึ ่ ่ซึงถ งถาข าขอมู อมูล ยังไม งไมอยู อยูใน ใน Buffer หมายเหตุ ทั ้ ้ง Read และ Write เกี ่ ่ยวข ยวของกั องกับ input แตจะไม จะไมเกีเกี ่ ่ยวข ยวของกั องกับ output เลย อธิบายได บายไดววา ถาจะ าจะ Read ขอมู อมูลที ่ ่ ลทียัยังไม งไมมีมีอยู อยู ใน ใน Buffer DBMS ก็จะ จะ ทําการ าการ input ขอมู อมูลจาก ลจาก DB Space เขามาไว ามาไวใน ใน Buffer กอนแล อนแลวจึ วจึงจะ งจะ Read ไดและถ และถาต าตองการ องการ Update ขอมู อมูลที ลที ่ ่ไม ไมมีมีใน ใน Buffer DBMS ก็จะ จะ ทําการ าการ input ขอมู อมูลจาก ลจาก DB Space เขามาไว ามาไวใน ใน Buffer กอนแล อนแลวจึ วจึงจะ งจะ Update ได (Q) แลว output จะทําเมื ่ ่ าเมือไหร อไหร เมือ DBMS และ OS เห็นสมควรคื นสมควรคือเมื ่ ่ อเมือไม อไมมีมใครใช ใี ครใช buffer นันแล นแลว (Release recently used) หรือ buffer เต็ม ซึ ่ ่ซึง (A) เมื ่ ่ buffer นั ้ ้ จะทําก ากอนหรื อนหรือหลั อหลัง commit ก็ได ได
10
Advanced Database Systems 1/49-IS20.2 Transaction Recovery Problem Statement
ปญหาที ญหาที ่ ่เกี ่ ่ เกียวข ยวของกั องกับการทํ บการทํา Transaction Recovery มีดดวยกั ว ยกัน 2 ขอ 1. มี Transaction ที ่ ่ commit แลวแต วแตยัยังไม งไม output ลง DB Space ถาเกิ าเกิด failure ทําอย าอยางไรจึ างไรจึงจะอยู งจะอยูถาวรบน ถาวรบน DB Space?
มี Transaction ที ่ ่ยัยังไม งไม commit แตการเปลี ่ ่ การเปลียนแปลงบางส ยนแปลงบางสวนได วนไดถูถูก output ลง DB Space เรียบร ยบรอยแล อยแลว ถาเกิ าเกิด Failure ขึ ้ ้ขึนมาทํ นมาทําอย าอยางไรจึ างไรจึงจะยกเลิ งจะยกเลิกการเปลี กการเปลี ่ ่ยนแปลงเหล ยนแปลงเหลานั านั ้ ้นออกจาก นออกจาก DB Space? ปญหาทั ญหาทั ้ ้ง 2 ขอนั ้ ้ อนันมี นมีทางแก ทางแกซึ ่ ่ซงจะใช ึงจะใช Logfile เขามาช ามาชวยในการ วยในการ recovery เราเรียกว ยกวา Log-based recovery นันเก็ นเก็บรายการเปลี ่ ่ บรายการเปลียนแปลงที ่ ่ ยนแปลงทีเกิเกิดขึ ดขึ ้ ้นทุ นทุกครั กครั ้ ้งทั ้ ้ งทังที งที ่ ่ commit และ ไม commit มีลัลักษณะเป กษณะเปน Text Logfile หรือ journal นั ้ ้ File ทําให าใหมีมีการบั การบันทึ นทึกได กไดงงายกว ายกวา จะมี Log record Logfile ก็จะมี ดที Transaction T เริ ่ ่เริมต มตนขึ ้ ้ นขึน จุดที ่ ่ X =data item อะไร record ไหน row ไหน, V =old value, V =new value Transaction มีการ การ commit ตรงนีมีมรูรี ูป) (ตรงนี ้ ้ าถามวา Commit จริงๆคื งๆคืออะไร ออะไร อยู อยูตรงไหน ตรงไหน (Q) ถาถามว ามีการ การ output log record สําเร็ าเร็จเมื จเมื ่ ่อไหร อไหรจุจดนั ้ ้ ดุ นันจะเรี นจะเรียกว ยกวา Physical commit (A) ถามี *** จุดสํ ดสําคั าคัญคื ญคือ log record จะถูก output ไป logfile กอน อน DB Buffer จะ output ลง DB Space ได เปน Protocol สําคั าคัญเรี ญเรียกว ยกวา Write Ahead Protocol หรือ Write Ahead Logging (WAL) *** 2.
i
i
i
j
1
2
j
1
2
i
หลักการ กการ Transaction Recovery กรณีของ ของ System crash หลังจากที ่ ่ งจากทีแก แกปปญหาต ญหาตนตอแล นตอแลว restart recovery process (start database) โดยมีขั ้ ้ขันตอนการทํ นตอนการทํางานคื างานคือ - DBMS สวน วน recover จะทําการ าการ search Logfile ยอนหลั อนหลังโดยย งโดยยอนจากท อนจากทายเพื ่ ่ ายเพือสํ อสํารวจว ารวจวา TX ใด commit TX ใด fail -
หลังจากนั ้ ้ งจากนันจะนํ นจะนํา TX id ที ่ ่ commit ไปไวใน ใน redo list และนํา TX id ของ TX ที ่ ่ที fail ไปไวใน ใน undo list สําหรั าหรับแต บแตละ ละ TX ใน undo list ใหเอาค เอาคา old value ไป undo DB Space สําหรั าหรับแต บแตละ ละ TX ใน redo list ใหเอาค เอาคา new value ไป redo DB Space
11
Advanced Database Systems 1/49-IS20.2 (Q) เมื ่ ่ เมือไหรจะมี อไหรจะมีการ การ output (A)
จาก log buffer ไปลง logfile
คําตอบมี าตอบมี 2 แนว -
As soon as possible - พอมี commit record เกิดขึ ดขึ ้ ้นเมื ่ ่ นเมือไหร อไหรจะรี จะรีบไล บไลลง ลง logfile ทันที นที
รวบรวม Log record ใหเต็ เต็ม block เสียก ยกอนแล อนแลวค วคอย อย output ลง log file เนื ่ ่ เนืองจากอาจจะมี องจากอาจจะมี commit ไดหลายๆ หลายๆ คําสั าสั ่ ่งทํ งทําให าให I/O busy นอยลง อยลง Log File เต็มช มชาลง าลง แต user รับความเสี บความเสี ่ ่ยงมากขึ ้ ้ ยงมากขึน ปจจุ จจุบับันนี นนี ้ ้ถืถือว อวา group นวิธีธทีที ่ ่นินี ิยม ยม เหตุผลเบื ้ ้ ผลเบืองหลั องหลังคื งคือ เมื ่ ่ เมือก อกอน อน Hardware ไมคคอยเสถี อ ยเสถียรเมื ่ ่ ยรเมือเจอ อเจอ commit ก็ตตองรี อ งรีบลง บลง logfile แตในป ในปจจุ จจุบับัน commit เปนวิ Hardware เสถียรมาก ยรมาก group commit จึงเป งเปนวิ นวิธีธที ่ ่ที ีดีดกว กี วา าไม logfile เก็บ old value กับ new value แทนที ่ ่ แทนทีจะเก็ จะเก็บคํ บคําสั าสั ่ ่ง (Q) ทําไม (A) Recovery process จะตอง อง idempotent ซึ ่ ่ซึงการเก็ งการเก็บ old value กับ new value จะ implement idempotent ไดงงายกว ายกวา -
Group commit -
Idempotent
บัติตงานหลายๆครั งิ านหลายๆครั ้งได งไดผลเหมื ผลเหมือนกั อนกับปฏิ บปฏิบับัติตเพี เิ พียงครั ยงครั ้งเดี งเดียว ยว Idempotent – ปฏิบั (Q) เมื ่ ่ เมือไหร อไหร content ของ logfile จะถูกบั กบันทึ นทึกลง กลง DB Space?
ปกติ content ของ log file ไมเคยจะต เคยจะตอง อง output (A) ในภาวะการณปกติ
ลง DB Space แตในขณะ ในขณะ recovery
Old value ใน undo list จะไป undo DB Space New value ใน redo list จะไป redo DB Space
ปจจุ จจุบับันมี นมีการแยกเก็ การแยกเก็บระหว บระหวาง าง New value และ old value กเก็บไว บไวใน ใน logfile ที ่ ่ทีเรีเรียกว ยกวา after image journal (AIJ) บางระบบเรียกว ยกวา redo logfile New value จะถูกเก็ กเก็บไว บไวใน ใน logfile ที ่ ่เรีเรียกว ยกวา before image journal (BIJ) Old value จะถูกเก็
AIJ
BIJ
เหตุผลที ผลที ่ ่ตตองแยกก็ องแยกก็เพื เพื ่ ่อที ่ ่ อทีจะประหยั จะประหยัด Space เพราะวา content ของ BIJ เมื ่ ่ เมือ commit เรียบร ยบรอยแล อยแลวก็ วก็สามารถที สามารถที ่ ่จะ จะ recycle ได ** มีคํ คากล าํ กลาวว าววาการมี าการมี Logfile เหลานี านี ้ ้ชชวยให วยให recover ไดก็กจริ ็จริง แตจะทํ จะทําให าให performance ปญหาเนื ่ ่ ญหาเนืองจากจะทํ องจากจะทําให าให I/O เพิ ่ ่ เพิมขึ ้ ้ มขึน ซึ ่ ่ง performance มีป เปนคํ นคํากล ากลาวที าวที ่ ่ผิผิด ** ซึ ่ ่ซึงป งปญหาที ่ ่ ญหาที Commit ชา มักจะเกิ กจะเกิดจากการไม ดจากการไมมีมี logfile เนื ่ ่ เนืองจากการ องจากการ output ไปยัง DB Space ทําได าไดยากกว ยากกวา output ไปยัง logfile
12
Advanced Database Systems 1/49-IS20.2
เวลาทํา redo นั ้ ้นันจะ นจะ redo ตั ้ ้ตังแต งแตจุจุดไหน ดไหน าการ redo ตั ้ ้งแต งแตหลั หลังจุ งจุด check point ซึ ่ ่งเป งเปนจุ นจุดที ดที ่ ่บับังคั งคับให บให DB Buffer มีการ การ output ไปยัง DB Space พรอม อม (A) จะทําการ กับทิ บทิ ้ ้ง Marker อะไรจะเกิดขึ ดขึ ้ ้นเมื ่ ่ นเมือ BIJ เต็ม (Q) อะไรเปนสาเหตุ นสาเหตุให ให BIJ เต็ม ยวของกั องกับ Volume Transaction ซึ ่ ่ซึงทํ งทําให าให BIJ เต็มแล มแลวยั วยังไม งไม Commit (A) เกี ่ ่ยวข เมื ่ ่ เมือ BIJ เต็ม Transaction ตัวต วตนเหตุ นเหตุจะถู จะถูก Rollback ซึ ่ ่ซึง BIJ ก็จะถู จะถูก clear พรอมที ่ ่ อมทีจะมา จะมา recycle ไดตตอไป อ ไป แตปปญหาอยู ญหาอยู ที ่ ่ทีววา เมื ่ ่ เมือ Transaction ถูก rollback จะทําให าใหเสี เสียงานได ยงานไดแนวทางแก แนวทางแกไขคื ไขคือ 1. ขยายขนาดของ BIJ เพิ ่ ่มให มใหเพี เพียงพอซึ ่ ่ ยงพอซึงควรจะทํ งควรจะทํา online ไดโดยไม โดยไมตตอง อ ง shutdown database 2. by pass BIJ หรือวิ ่ ่ อวิง no log option ซึ ่ ่งเป งเปนเรื ่ ่ นเรืองที ่ ่ องทีเสี เสี ่ ่ยงพอสมควร ยงพอสมควร 3. แบง Transaction ใหญออกเป ออกเปน Transaction ยอยเช อยเชนการ นการ Update หมู หมู เลืเลือดถ อดถาทํ าทําเป าเปนจั นจังหวั งหวัด ๆ ก็สามารถทํ สามารถทําได าได อะไรจะเกิดขึ ดขึ ้ ้นเมื ่ ่ นเมือ AIJ เต็ม ถา AIJ เต็มจะทํ มจะทําให าใหกระทบทั ้ กระทบทั ้งระบบซึ ่ ่ ระบบซึ งการ งการ rollback จะไมชชวยเลย วยเลย solution ในการแกปปญหามี ญ หามี 2 วิธีธคืคี อื 1. rollback transaction ตัวต วตนเหตุ นเหตุแล แลวให วให system หยุดทํ ดทํางาน างาน เพราะถือว อวาเป าเปนเรื ่ ่ นเรืองเสี ่ ่ องเสียงที ่ ่ ยงทีจะทํ จะทํางานต างานตอ แตในบางระบบ ในบางระบบ AIJ จะเปน File ที ่ ่ขยายขนาดได ขยายขนาดได ดังนั งนั ้ ้นหากพบว นหากพบวา System หยุดทํ ดทํางานก็ างานก็ให ใหดูดูววา AIJ ทําให าให Disk เต็ม หรือไม อไม 2. by pass AIJ โดยมี message แจงให งให DBA รับทราบว บทราบวาขณะนี ้ ้ าขณะนีกํกาลั ําลังรั งรับความเสี ่ ่ บความเสียงอยู ยงอยู ปจจุ จจุบับันนี ้ ้ นนี DBMS ยี ่ ่ยีหหอ Top นั ้ ้นัน มวัวี ันเต็ นเต็ม หลักการคื กการคือ จะให AIJ มีหลายชุ หลายชุดเมื ดเมื ่ ่อเต็ อเต็มชุ มชุดหนึ ่ ่ ดหนึงก็ งก็จะ จะ switch ไปใชอีอกี ชุดหนึ ่ ่ ดหนึง AIJ จะไมมี (Q)
จากนั ้ ้น AIJ ตัวเก วเกาก็ าก็จะ จะ archive log เพื ่ ่ เพือเก็ อเก็บไว บไวใช ใชตอน ตอน recovery และ AIJ ก็สามารถที สามารถที ่ ่จะ จะ clear ได ประเภทของ Log-based recovery มี AIJ) (1) BIJ Only ( ไมมี การ Recovery ทํางานได างานไดตามปกติ ตามปกติตาม ตาม logically การ Commit จะเปนการ นการ output DB Buffer ที ่ ่ทีเกีเกี ่ ่ยวข ยวของกั องกับ Transaction นั ้ ้ นันลง นลง DB Space ครบถวน วน ถา Fail กอน อน commit ก็ไม ไมเป เปนไรเพราะวา Old value ยังอยู งอยู สามารถที สามารถที ่ ่จะเอามา จะเอามา
13
Advanced Database Systems 1/49-IS20.2 undo ได ถา Commit แลว old value ก็ recycle ได ถา Commit แลว Fail ก็ไม ไมตตอง อ ง redo เลยเพราะไดลง ลง DB Space ไป
หมดแลว ขอดี อดี
3.
ประหยัด space ในสวนของ วนของ AIJ วขึ ้ ้นอี นอีกเนื กเนื ่ ่องจากไม องจากไมตตอง อ ง redo Recovery เร็วขึ ไมเกิเกิดป ดปญหา ญหา AIJ เต็ม
1.
Commit ชาเนื ่ ่ าเนืองจากต องจากตองรอให องรอใหลง ลง DB Space ครบถวนเสี วนเสียก ยกอนทํ อนทําให าให Transaction อื ่ ่อืนต นตองรอใช องรอใชทรั ทรัพยากร พยากร
1. 2.
ขอเสี อเสีย Case Study Begin TX 30,000
Insert into t1 value (…)
รอบ
Display date/time End TX
ไมมีมี AIJ ใชเวลา เวลา 19 ชัชั ่ ่วโมง วโมง แตถถามี า มี AIJ ใชเวลาแค เวลาแค 8 นาที
Display date/time 8 นาทีก็ กนั็นับว บวาช าชามากเป ามากเปนเพราะเวลาดั นเพราะเวลาดังกล งกลาวเป าวเปน Test system แตถถาเป า เปน production มีงานที งานที ่ ่วิ ่ ่วิงอยู งอยู มากมายทํ มากมายทําให าให DB
มเร็ว Buffer เต็มเร็
จึงมี งมีการ การ output ไปยัง DB Space ไดเร็เร็วขึ ้ ้ วขึน มี BIJ) (2) AIJ Only (ไมมี AIJ
DB Buffer
DB S ace
การ Commit เปนการบั นการบันทึ นทึก commit record ลง logfile ถายั ายังไม งไม Commit ก็จะไม จะไมมีมการ กี าร output modified buffer ของ transaction นั ้ ้ นันลง นลง DB Space ขอดี อดี วมาก (Fast Commit) เนื ่ ่ เนืองจากระหว องจากระหวางการปฏิ างการปฏิบับัติติ transaction มีการ การ output ของ logfile 1. commit เร็วมาก เทานั านั ้ ้น 2. ประหยัด space ในสวนของ วนของ BIJ ดปญหา ญหา BIJ เต็ม 3. ตัดป วเนื ่ ่องจากไม องจากไมตตอง อ ง undo 4. Recovery เร็วเนื
14
Advanced Database Systems 1/49-IS20.2
ขอเสี อเสีย ไมเหมาะกั เหมาะกับ Volume transaction เพราะ Buffer อาจจะเต็มก มกอนที อนที ่ ่จะมี จะมีการ การ commit ได ซึ ่ ่ง DBMS มีทาง ทาง แกคืคอจะ อื จะ swap DB Buffer ลง swap area ของ OS แตในทางปฏิ ในทางปฏิบับัติติ DB Buffer เต็มก็ มก็ Hang แลว (3) มีทั ้ ้ ทัง AIJ และ BIJ ขอดี อดี 1. commit เร็วมาก วมาก เนื ่ ่องจาก องจาก AIJ จะดูแลในเรื ่ ่ แลในเรือง อง Fast Commit 2. สามารถทํา Volume transaction ไดเนื ่ ่ เนืองจากมี องจากมี BIJ ดูแลในเรื ่ ่ แลในเรือง อง Volume transaction อยู อยู แยกประเภทตาม Database Modification Technique เปนการถ นการถาย าย Data จาก DB Buffer ลงสู DB Space อนจึงจะถ งจะถายจาก ายจาก DB Buffer ลงสู Db Space ไดเที เทียบกั ยบกับ AIJ Only (1) Deferred database modification commit กอนจึ 1.
T0 :
Read(A)
T1 :
Read(C)
A := A – 50
C := C + 100
Write(A)
Write(C)
Read(B) B := B + 50 Write(B)
ให A = $1000, B = $2000, C = $700 ถานํ านํา T0 และ T1 มาวิ ่ ่ง concurrent จะไดววา < T0 start> < T0, A, 950> < T0, B, 2050> < T0 commit> < T1 start> < T1, C, 600> < T1 commit> (2) Immediate database modification
DB Buffer จะถูก out ลง DB Space ไดหลั หลังจากที งจากที ่ ่มีมีการ การ output log record
ลง Logfile เรียบร ยบรอยแล อยแลว ซึ ่ ่ซึงอาจจะก งอาจจะกอนหรื อนหรือหลั อหลัง Commit ก็ได ไดเที เทียบได ยบไดววาเป า เปน BIJ Only หรือมี อมีทั ้ ้ทัง AIJ และ BIJ ก็ได ได ทั ้ ้ทัง 2 วิธีธจะต จี ะตองเป องเปนไปตาม นไปตาม Write Ahead Protocol
15
Advanced Database Systems 1/49-IS20.2 Check point
เมือเกิ อเกิด Failure ขึ ้ ้ขึนจะมี นจะมีการ การ redo และ undo ถามวา undo ยอนถึ อนถึงไหน งไหน และ redo ยอนถึ อนถึงไหน งไหน (Q) เมื ่ ่ (A) Undo จะยอนถึ อนถึง Sync point ลาสุ าสุด
องมี Check point เขามาเกี ่ ามาเกี ่ยวของ อง โดยเปนจุ นจุดที ่ ่ ดทีบอกว บอกวา ณ จุดนี ้ ้ ดนีได ไดมีมีการ การ Output ไปยัง DB Space Redo จะตองมี เรียบร ยบรอยแล อยแลวซึ ่ ่ วซึงสามารถบอกได งสามารถบอกไดววาจะทํ าจะทํา Redo ถึงไหน งไหน กิจกรรมที ่ ่ จกรรมที DBMS ทําเมื ่ ่ าเมือถึ อถึงจุ งจุด Check point 1. เอา log record ลง logfile 2. เอา DB Buffer ลง DB Space 3. ลง check point record เปน marker ไวใน ใน logfile ในทางปฏิบับัติติจะมี จะมีการลง การลง sequence number ไวดดวยว ว ยวาเป าเปน check าไหร point หมายเลขเทาไหร TC
TF
T1 T2
Redo Undo
T3
Redo
Undo T5
จุด Check point TF = จุดที ่ ่ ดที Fail T1 = คือ commit กอน อน check point T2 = คือ commit หลัง check point T3 = คือ start กอน อน check point แลว fail คือ start และ commit หลัง check point T4 = คือ start หลัง check point แลว fail T5 = าถี ่ ่แค แคไหน ไหน (Q) จุด check point ควรทําถี (A) ถา check point ถี ่ ่การกู การกู คืคนก็ นื ก็จะทํ จะทําได าไดเร็เร็ว แตอาจจะทํ อาจจะทําให าให system สะดุดเป ดเปนช นชวงๆ วงๆ ได เพราะระหว เพราะระหวางนี างนี ้ ้มัมันทํ นทํางานอื ่ ่ างานอืนไม นไมได ได ในกรณีที ่ ่ทีมีมี AIJ หลาย file รอยตอระหว อระหวาง าง file คือจุ อจุด default check point TC
=
16
Advanced Database Systems 1/49-IS20.2
ถาตั าตัวที ่ ่ วที 1 เต็มและมาใช มและมาใชตัตัวที ่ ่ วที 2 มีการ การ Fail เกิดขึ ดขึ ้ ้น ในการ redo ทําถึ าถึงจุ งจุอ Check point ลาสุ าสุดคื ดคือจะอ อจะอางถึ างถึง content ของ logfile ปจจุ จจุบับันเท นเทานั านั ้ ้น ไมจํจาเป าํ เปนต นตองไปอ องไปอางถึ างถึง Content ของ logfile กอนหน อนหนา จุด Default Check point จุด Fail
17
Advanced Database Systems 1/49-IS20.2
Buffer Management (Q) การทํา buffer management ควรเปนหน นหนาที าที ่ ่ของ ของ OS หรือ DBMS หรือช อชวยกั วยกัน (A) เนื ่ ่ เนืองจาก องจาก Write Ahead Protocol มี DBMS เทานั านั ้ ้นที ่ ่ นทีทราบ ทราบ ดังนั ้ งนั ้นจึงเป งเปนหน นหนาที าที ่ ่ของ ของ DBMS แตอาจจะมี อาจจะมี OS ชวยได วยได Program Result
SQL DBMS
Database Block OS File Manager
By pass File Manager
OS Block OS Disk Manager Bit & Byte
Stored
การสราง าง DB Space 1. มีการเตรี การเตรียม ยม File วามี ามีกี ่ ่กี Block ซึ ่ ่งอาจจะไม งอาจจะไมได ไดอยู อยูบน บน drive เดียวกั ยวกัน 2. เมื ่ ่ เมือได อได File มาแลวก็ วก็ทํทาการ าํ การ create DB Space ทํา File ตางๆ างๆ เหลานั านั ้ ้นให นใหเป เปนก นกอนเดี อนเดียวกั ยวกัน 3. ก็จะได จะได DB Space ที ่ ่ทีมีมี File ตางเหล างเหลานั านั ้ ้นมี นมีลัลักษณะเป กษณะเปน black box ซึ ่ ่งจะมองไม งจะมองไมเห็ เห็นในสายตา นในสายตา programmer แต DBMS จะชวยให วยใหมอง มอง Database เปน Table เราสามารถ Set ไดววา 1 database block มีกี ่ ่กี OS block ขึ ้ ้ขึนกั นกับประเภทของงาน บประเภทของงาน Logical block = Database block Physical block = OS block (Q) (A)
ถา File Manager กับ DBMS คุยกั ยกันไม นไมคคอยรู อ ยรู เรื ่ ่เรือง อง จะเกิดอะไรขึ ้ ้ ดอะไรขึน จะเห็นว นวาคอขวดจะไปอยู าคอขวดจะไปอยูที ่ ่ที File Manager
18
Advanced Database Systems 1/49-IS20.2 Log-record Buffering
มีกติ กติกาดั กาดังนี ้ ้ งนี 1. Commit คือการเอา อการเอา commit record ลง logfile สําเร็ าเร็จเมื จเมื ่ ่อไหร อไหรก็ก็ถืถือว อวา commit 2. commit record ตองเป องเปน record
สุดท ดทายของ ายของ transaction นั ้ ้นัน 3. กอนที ่ ่ block ของ data จะ output ลง DB Space ไดนั อนที block น ้ ้ัน log record จะตอง อง output ลง stable storage เสียก ยกอน อน Database ฺ ฺBuffering Buffering Log File
(1) Log buffer
B1 (2)
DB Space (3) B2
ตัวอย วอยางกรณี างกรณีที ่ ่ทีตตองการอ อ งการอาน าน B2 เขามาใน ามาใน DB Buffer ที ่ ่ทีเต็ เต็ม 1. ตองการอ องการอาน าน B2 แต Buffer เต็ม ดังนั ้ ้ งนันจึ นจึงต งตองไล องไลของเก ของเกาก ากอนโดยการบั อนโดยการบันทึ นทึก log record ของ B1 ลง logfile 2. ไล B1 ลง DB Space 3. อาน าน B2 เขามาใน ามาใน DB Buffer กรณีทีท ่ ่ี DBMS กับ File manager ไมเข เขาคู าคูกักัน เราสามารถ by pass ให DBMS ลงเลนกั นกับ Disk Manager โดยตรง เราเรียกว ยกวา Raw Device Option ซึ ่ ่ซึงจะเร็ งจะเร็วขึ วขึ ้ ้นอี นอีก 20 % Operating System Role in Buffer Management
จองเนือที อที ่ ่ใน ใน memory 1. DBMS จองเนื ้ ้ DB Buffer Fixed Size
สําหรั าหรับทํ บทําเป าเปน DB Space และดูแลเอง แลเอง DBMS จัดการ ดการ Virtual memory ของ OS
การทํา Database Buffer ทําตาม าตาม Protocol ที ่ ่ทีคุคยกั ยุ กันไว นไวทัท ้ ้ังหมดเพี งหมดเพียงแต ยงแต DBMS เปนคนจั นคนจัดการ ดการ 19
Advanced Database Systems 1/49-IS20.2 User
DBMS DBMS
Disk Manager
DB Space
เปนการยก นการยก 1 Device ใหเป เปน 1 DB Space 2. DBMS ใชเนื ้ ้ เนือที ่ ่ อทีของ ของ Virtual memory สําหรั าหรับทํ บทําเป าเปน DB Space ซึ ่ ่งอยู งอยูภายใต ภายใตการจั การจัดการของ ดการของ OS DB Buffer
User
Virtual memory ของ OS DBMS
File Manager
Disk Manager
DB Space จะเปน File ซึ ่ ่ง OS ดูแล แล
DBMS DB Buffer
แบบที ่ ่ แบบที 1 เร็วขึ วขึ ้ ้นในกรณี นในกรณีที ่ ่ที DBMS และ File Manager ทํางานไม างานไมสัสัมพั มพันธ นธกักัน าใหใช ใชประโยชน ประโยชนไม ไมเต็ เต็มที มที ่ ่ หาก Buffer เหลือก็ อก็ไม ไมสามารถเอาไปใช สามารถเอาไปใชกับงานอื บงานอื ่ ่นได นได 2. ขนาดของ Buffer fix ทําให และหาก Buffer ไมพอก็ พอก็ไม ไมสามารถขยายขนาดได สามารถขยายขนาดได เนื ่ ่องจาก องจาก Fix ขนาดอยู ขนาดอยู (ขนาดของ Buffer สามารถกําหนด าหนด เปน Parameter ในการทํา performance tuning) 1.
20
Advanced Database Systems 1/49-IS20.2
แบบที ่ ่ แบบที 2 ใช memory ไดอย อยางคุ างคุ มค มคา ทําใหการใช การใชทรั ทรัพยากรดี พยากรดีขึ ้ ้ขนึ 2. เปนไปได นไปไดววาถ าถาไม าไมใช ใช Buffer ไปซักระยะ กระยะ ก็จะถู จะถูก page-out และเมื ่ ่ และเมือต อตองการใช องการใชงานก็ งานก็ตตองเสี อ งเสียเวลา ยเวลา page-in เขามาอี ามาอีก สรุปว ปวาถ าถา DBMS กับ OS ถูกคู กคูกักันก็ นก็ใช ใชแบบที ่ ่ แบบที 2 และถาไม าไมถูถูกคู กคูกักันก็ นก็ใช ใชแบบที ่ ่ แบบที 1 Shadow Paging (หัวข วขอนี ้ ้ อนีใน ใน 5 edition ตัดทิ ดทิ ้ ้ง) การใช Log-based recovery มีขขอเสี อ เสียคื ยคือต อตองใช องใชเวลาในการ เวลาในการ redo undo การใช shadow paging จะเหมือนกั อนกับโทรทั บโทรทัศน ศน คือเป อเปดปุ ด ปุบติ บติดป ด ปบ ไมตตองรอ อ งรอ แตจะใช จะใชกักับระบบเล็ บระบบเล็กๆ กๆ 1.
th
Page Table
Page on disk
กลาวคื าวคือจะมี อจะมีการจั การจัด Page บน disk แลวก็ วก็มีม page ชไปยั ีไปยังที ่ ่ งทีตตางๆ างๆ บน page นั ้ ้นัน ซึ ่ ่ซึงเป งเปน page table ที ่ ่ DBMS จัด ี page table ที ่ ่ชี ้ ้
Shadow Page Table
Current Page Table Page on disk
หลักของ กของ Shadow paging 1. เมื ่ ่ begin transaction ก็จะสร เมือมี อมี begin จะสราง าง current page table ขึ ้ ้ขึนมาอี นมาอีกตั กตัวหนึ ่ ่ วหนึง แลว page table เกากลายเป ากลายเปน shadow page 2. เมื ่ ่ เมือต อตองการแก องการแกไขก็ ไขก็จะก จะกอบ อบ page ที ่ ่ทีตตองการแก อ งการแกไขมาเป ไขมาเปน page ใหมซึซ ่ ่งึ current page table จะชี ้ ้ไปยั ไปยัง page ใหมและจะ และจะ แกไขที ่ ่ ไขที Page ใหม แต shadow page จะชี ้ ้ จะชีไปที ไปที ่ ่ page าเสมอ page เกาเสมอ าเกิด Failure ขึ ้ ้ขึนก็ นก็จะทิ ้ ้ จะทิง current page ไปใช shadow page แทน เราเรียกว ยกวา Instance Rollback 3. ถาเกิ 4. แตถ ถา commit ก็จะเป จะเปนการ นการ save current page อยางถาวรและโยน างถาวรและโยน Shadow Page ทิ ้ ้งไป งไป 21
Advanced Database Systems 1/49-IS20.2
Database Backup Concept เราทํา Backup เพื ่ ่ เพือกู อ กู database กรณีเกิเกิด Disk Failure แบงเป งเปน 2 ลักษณะคื กษณะคือ นการ Backup ทั ้ ้ทัง DB Space ซึ ่ ่งถ งถาข าขอมู อมูลไม ลไมมากนั มากนัก จะทํา Volume Backup ทุกวั กวันก็ นก็ได ได 1. Volume Backup เปนการ วนเปลียนแปลง ยนแปลง หรือ log achieve (AIJ) 2. Incremental Backup เปนการ Backup เฉพาะสวนเปลี ่ ่
SAT Vol. backup
SAT Vol.
Volume Backup
SUN log achieve
SUN log
MON log achieve
MON log
Incremental Backup THU log achieve
THU log
FRI log achieve
FRI log
ตัวอย วอยาง าง กรณี Disk crash วันพุ นพุธ 11:00 SAT Vol.
2
nd
Vol. Back
nd
2 Volume Backup
Merge SUN log
Mon morning Merge
MON log
Tue morning Merge
TUE log
Wed mornin
Merge WED log
Wed 11:00
วิธีธการตามรู กี ารตามรูปนี ปนี ้ ้เรีเรียกว ยกวา Rollforward Activity เราสามารถทํา Rollforward ลวงหน วงหนาได าไดโดยการทํ โดยการทํา Cumulative Backup 22
Advanced Database Systems 1/49-IS20.2 (Q) การทํา Backup มีกี ่ ่ กีวิวธีธิ ี อะไรบาง าง (A) ? Database Export/Import Export/Import
วัตถุ ตถุประสงค ประสงคของการทํ ของการทํา Export/Import Transportation จากระบบหนึ ่ ่ เพื ่ ่ เพือทํ อทํา DB Transportation จากระบบหนึงไปเป งไปเปนอี นอีกระบบหนึ ่ ่ กระบบหนึง โดยที ่ ่ โดยที Design เหมือนเก อนเกา -
Physical Database Reorganization Reorganization
เมื ่ ่ เมือใช อใชงานไปได งานไปไดซัซักระยะหนึ ่ ่ กระยะหนึง จะเกิด Fragmentation การ Export/Import จะชวยจั วยจัดระเบี ดระเบียบ ยบ Physical Data ลักษณะการทํ กษณะการทํางานจะเป างานจะเปนการ นการ convert data ไปเปน command เชน Create … : Insert … -
นอกจากนี ้ ้ นอกจากนียัยังใช งใชขยาย ขยาย Physical limit ของ tables ซึ ่ ่ซึง คําสั าสั ่ ่ง create table จะทําการสร าการสราง าง initial blocks 30 blocks 20 extensions
Max no of ext = 999 20 extensions
Parameter เหลานี ้ ้ านีจะไปอยู จะไปอยูใน ใน DB Space Definition
23
Advanced Database Systems 1/49-IS20.2
Concurrent Execution การที ่ ่ Transaction ถูกปฏิ กปฏิบับัติตริ วมกั วมกันในเวลาเดี นในเวลาเดียวกั ยวกัน โดยอาศัยหลั ยหลักการที ่ ่ กการทีววา CPU ทํางานเร็ างานเร็วกว วกวา I/O Feature ของการทํา transaction 1. Correctness - จะเนนว นวาข าขอมู อมูลที ลที ่ ่ได ไดจะต จะตองถู องถูกต กตอง อง างานเสร็จได จไดเร็เร็วขึ วขึ ้ ้น 2. Productivity – ทํางานเสร็ Outline ในการบรรยาย 1) ความถูกต กตองคื องคืออะไร ออะไร ในการทํา Concurrent Execution server/application อยางไรบ 2) ถาอยากได าอยากไดความถู ความถูกต กตองเราต องเราตอง อง Set server/application างไรบาง าง ซึ ่ ่ซึงจะมี งจะมีหลายระดั หลายระดับ 3) ปญหาอุ ญหาอุปสรรคที ปสรรคที ่ ่ตตองฝ อ งฝาฟ าฟน 4 ประการ 4) Set isolation แลวจะแก วจะแกปปญหาอะไร ญหาอะไร 5) DBMS ใชเทคโนโลยี เทคโนโลยีแบบไหนถึ แบบไหนถึงจะได งจะไดความถู ความถูกต กตองเหล องเหลานั านั ้ ้น Concurrent Execution
เรืองของ องของ Concurrent Execution ACID Properties เรื ่ ่ ถามี ามี T และ T วิ ่ ่งร งรวมกั วมกัน i
j
คือว อวาถ าถามี ามี 2 Transaction วิ ่ ่งร งรวมกั วมกันจะต นจะตองไม องไมเห็ เห็นกั นกัน
|------------- T i-------------|
Serializable Seriali zable Con C oncurre current nt schedule
|------------- T j -------------|
ใหผลลั ผลลัพธ พธเหมื เหมือนกั อนกับ |------------- T -------------|------------- T -------------| Serialize Schedule ตัวอย วอยาง าง Schedule 1 การโอนเงินซึ นซึ ่ ่งเป งเปน Serial Schedule ที ่ ่ที T นํา T ตาม j
i
1
T 1
2
T 2
Read(A)
หมายเหตุ
A := A – 50
นการจัดลํ ดลําดั าดับการปฏิ บการปฏิบับัติตงานของคํ งิ านของคําสั าสั ่ ่งใน งใน Transaction Schedule เปนการจั
Write(A) Read(B) B := B + 50 Write(B) Read(A) temp := A * 0.1 A := A – temp Write(A) Read(B) B := B + temp Write(B)
24
Advanced Database Systems 1/49-IS20.2 Schedule 2 การโอนเงินซึ ่ ่ นซึงเป งเปน Serial Schedule ที ่ ่ T 2 T 1
นํา
T 1
ตาม
T 2
Read(A) temp := A * 0.1 A := A – temp Write(A) Read(B) B := B + temp Write(B) Read(A) A := A – 50 Write(A) Read(B) B := B + 50 Write(B)
นซึงเป งเปน Concurrent Schedule Schedule 3 การโอนเงินซึ ่ ่ T 1
ซึ ่ ่ซึงผลลั งผลลัพธ พธเหมื เหมือนกั อนกัน Schedule 1
T 2
Read(A) A := A – 50 Write(A) Read(A) temp := A * 0.1 A := A – temp Write(A) Read(B) B := B + 50 Write(B) Read(B) B := B + temp Write(B)
การที ่ ่จะดู จะดูววาผลลั าผลลัพธ พธสุสดท ุดทายเหมื ายเหมือนหรื อนหรือไม อไมเหมื เหมือน อน DBMS ดูได ไดยากและ ยากและ overhead สูง
25
Advanced Database Systems 1/49-IS20.2 (Q) Write (A) ใน T 2
และ Read(B) ใน T สลับที บที ่ ่กักันได นไดหรื หรือไม อไม บไดเพราะว เพราะวาเป าเปนคํ นคําสั าสั ่งที ่ ่ทีปฏิ ปฏิบับัติติบนคนละ บนคนละ Data item กันจะกล นจะกลาวได าวไดววาเป า เปนคํ นคําสั าสั ่ ่งที งที ่ ่ไม ไม conflict (A) สลับได 15.7, 15.8, 15.9 เปน Conflict Equivalent Schedule ซึ ่ ่งแปลงรู งแปลงรูปไปมาซึ ่ ่ ปไปมาซึงกั งกันและกั นและกันได นได โดยการสลับตํ บตําแหน าแหนงคํ งคําสั าสั ่ ่งที ่ ่ งทีไม ไม 1
conflict 15.7, 15.8 เปน Conflict Serializable Schedule
เพราะวา Conflict Equivalent กับ Serial Schedule าใหรูรปมาแล ูปมาแลวถามว วถามวา Conflict Serializable Schedule หรือไม อไม (Q) ถาให (A) ใหดู ดววู าสลั าสลับแล บแลวจะกลายเป วจะกลายเปน Serial Schedule หรือไม อไม สามารถสลับตํ บตําแหน าแหนงคํ งคําสั าสั ่งที ่ ่ทีไม ไม conflict กันได นได ๊มัมัย าถามวาสลั าสลับแล บแลวผลลั วผลลัพธ พธถูถกต กู ตองหรื องหรือไม อไม (Q) ถาถามว (A) ใชวิวิธี ธแทนค แี ทนคาได าไดเลย เลย สรุปนิ ปนิยามของ ยามของ Conflict นไดก็ก็ตตอเมื ่ ่ อ เมือ 2 คําสั าสั ่ ่งนั ้ ้ งนันมาจากคนละ นมาจากคนละ transaction กันและปฏิ นและปฏิบับัติติงานบน งานบน Data item เดียวกั ยวกัน Transaction จะ conflict กันได 1 ใน 2 นั นั ้ ้นเป นเปนคํ นคําสั าสั ่ ่ง write T 3
T 4
ผลลัพธ พธสุสุดท ดทายไม ายไมเหมื เหมือน อน Serial Schedule และ conflict
Read(Q) Write(Q) Write(Q)
าถูกต กตองหรื องหรือไม อไม (Q) จากรูป 15.11 ถามวาถู T 1
T 5
Read(A) A := A – 50 Write(A) Read(B) B := B – 10 Write(B) Read(B) B := B + 50 Write(B) Read(A) A := A + 10 Write(A)
กตอง อง (A) ถูกต
26
Advanced Database Systems 1/49-IS20.2 (Q) Conflict Serializable หรือไม อไม
เนืองจากมี องจากมีการ การ read กับ write บน B ดวยกั วยกัน จึงสลั งสลับกั บกันไม นไมได ได ดังนั ้ ้ งนันจึ นจึงไม งไม Conflict Serializable (A) ไม เนื ่ ่ (Q) จากรูป 15.12 ถามวาถู าถูกต กตองหรื องหรือไม อไม T 3
T 4
T 6
Read(Q) Write(Q) Write(Q) Write(Q)
กตอง อง (A) ถูกต (Q) Conflict Serializable หรือไม อไม (A) ไม เนื ่ ่ เนืองจากมี องจากมีการ การ write บน Q ดวยกั วยกัน จึงสลั งสลับกั บกันไม นไมได ได ดังนั ้ ้ งนันจึ นจึงไม งไม Conflict Serializable Conflict Serializability 15.11 15.12 15.7 15.8
15.10
ผิดและไม ดและไม Conflict Serializable Schedule ถูกต กตองแต องแตไม ไม Conflict Serializable Schedule ถูกต กตองเป องเปน View Serializable แตไม ไม Conflict Serializable Schedule ถูกต กตองและ องและ Conflict Serializable Schedule
นิยาม ยาม Schedule นี นี ้ ้จะเป จะเปน Conflict Serializable Schedule ก็ตตอเมื ่ ่ อ เมือ Schedule นันั ้ ้น Conflict Equivalent
กับ Serial
Schedule View Serializability
จากรูป 15.12 จะเห็นว นวาคํ าคําตอบถู าตอบถูกต กตองแต องแตไม ไม Conflict Serializable ดังนั ้ ้ งนันจึ นจึงมี งมีอีอกมาตรฐานหนึ ีกมาตรฐานหนึ ่ ่งขึ งขึ ้ ้นมาเรี นมาเรียกว ยกวา View Serializable Schedule
นิยาม ยาม นี ้ ้จะเป จะเปน View Serializable Schedule ก็ตตอเมื ่ ่ อ เมือ Schedule Schedule นี
นันั ้ ้น View Equivalent กับ Serial Schedule
27
Advanced Database Systems 1/49-IS20.2
ตัวอย วอยาง าง กําหนดให าหนดให S และ S เปน 2 Schedule ซึ ่ ่ซึงมี งมี Transaction ในชุดเหมื ดเหมือนๆ อนๆ กัน การที ่ ่จะบอกได จะบอกไดววา S และ S เปน View Equivalent กันได นไดนั ้ ้นันจะต นจะตองมี องมีคุคณสมบั ณุ สมบัติติ 3 ขอดั อดังนี ้ ้ งนี 1) สําหรั าหรับแต บแตละ ละ data item Q ใดๆ ถา Transaction T Read(Q) เปนคนแรกใน นคนแรกใน Schedule S ก็จะต จะตอง อง Read(Q) เปน คนแรกใน Schedule S ดวย วย 2) ใน Schedule S ถา T Read(Q) ซึ ่ ่งถู งถูก Write(Q) โดย T ใน Schedule S T ก็จะต จะตอง อง Read(Q) ซึ ่ ่ซึงถู งถูก นกัน Write(Q) โดย T เชนกั 3) สําหรั าหรับแต บแตละ ละ data item Q ใดๆ ถา Transaction T Write(Q) เปนคนสุ นคนสุดท ดทายใน ายใน Schedule S ก็จะต จะตอง อง Write(Q) เปนคนสุ นคนสุดท ดทายใน Schedule S ดวย วย ตามที ่ ่ Conflict Serializable ก็ยยอมจะ อมจะ View Serializable ดวยเช วยเชนกั นกัน *** *** Schedule ใดก็ตามที ’
’
i
’
’
j
i
i
j
i
’
T 1
T 2
T 1
Read(A)
Read(A)
Write(A)
Write(A) Read(A)
Read(B)
Write(A)
Write(B)
T 2
Read(B)
Read(A)
Write(B)
Write(A) Read(B)
Read(B)
Write(B)
Write(B)
Schedule S
Schedule S
’
จะเห็นว นวา 1) ใน Schedule S T Read(A) เปนคนแรกใน นคนแรกใน Schedule S T ก็ Read(A) เปนคนแรกเช นคนแรกเชนเดี นเดียวกั ยวกัน 2) ใน Schedule S T Read(B) เปนคนแรกใน นคนแรกใน Schedule S T ก็ Read(B) เปนคนแรกเช นคนแรกเชนเดี นเดียวกั ยวกัน คุณสมบั ณสมบัติติขขอ 1 ผาน าน นคนสุดท ดทายใน ายใน Schedule S T ก็ Write(A) เปนคนสุ นคนสุดท ดทายเช ายเชนเดี นเดียวกั ยวกัน 3) ใน Schedule S T Write(A) เปนคนสุ นคนสุดท ดทายใน ายใน Schedule S T ก็ Write(B) เปนคนสุ นคนสุดท ดทายดังนั ้ ้ งนัน คุณสมบั ณสมบัติ ขขอ 3 ผาน าน 4) ใน Schedule S T Write(B) เปนคนสุ 5. ใน Schedule S T Read(A) ซึ ่ ่งถู งถูก Write(A) โดย T ใน Schedule S T Read(A) ซึ ่ ่ซึงถู งถูก Write(A) โดย T เชนเดี นเดียวกั ยวกัน 6. ใน Schedule S T Read(B) ซึ ่ ่งถู งถูก Write(B) โดย T ใน Schedule S T Read(B) ซึ ่ ่ซึงถู งถูก Write(B) โดย T เชนเดี นเดียวกั ยวกันคุ นคุณสมบั ณสมบัติติขขอ 2 ผาน าน และสรุปได ปไดววา 2 Schedule นั ้ ้นัน View Equivalent กัน ดังนั ้ ้ งนัน Schedule S จึงเป งเปน View ’
1
’
1
’
2
2
1
’
2
2
1
1
1
2
2
’
’
2
1
2
1
Serializable Schedule
28
Advanced Database Systems 1/49-IS20.2 Conflict Serializable เปน Subset ของ View Serializable
View Serializable View Serializable แตไม ไม Conflict Serializable
ซึ ่ ่ซึงได งไดแก แก Blind write คือ Write โดยที ่ ่ไม ไมมีมการ กี าร Read ลวงหน วงหนา
Conflict Serializable Recoverability
ขอสั อสังเกตุ งเกตุคืคอทั อื ทั ้ ้ง Conflict Serializable และ View Serializable นั ้ ้นันดู นดูเฉพาะคํ เฉพาะคําสั ่ ่ าสัง read และ write เทานั านั ้ ้น ยังไม งไมได ไดมีมี ามาเกียวด ยวดวย วย ดังนั ้ ้ งนันจึ นจึงมี งมี Recoverable Schedule ซึ ่ ่ซึงจะมี งจะมีการพิ การพิจารณา จารณา Failure เกิดขึ ดขึ ้ ้น Failure เขามาเกี ่ ่ T 8
T 9
Read(A) Write(A) Read(A) Read(B) : Fail
จากตารางจะเห็นว นวา T จากมีการ การ Read(A) ซึ ่ ่ซึง Write(A) โดย T แตสุสดท ุดทาย T Fail และ Rollback ดังนั ้ ้ งนันทํ นทําให าให T Read(A) ที ่ ่ที ผิด ๆ ไป ซึ ่ ่ซึงมองตามหลั งมองตามหลักการแล กการแลวน วนาจะ าจะ Rollback T ดวย วย แตเป เปนไปไม นไปไมได ไดเนื เนื ่ ่องจากว องจากวา T ได commit ไปแลว ลักษณะการจั กษณะการจัด Nonrecoverable Schedule ซึ ่ ่ แบบนี ้ ้ แบบนีเรีเรียกว ยกวา Nonrecoverable ซึงเราไม งเราไมอยากได อยากได นิยาม ยาม าที ่ ่ Write จาก T ไดนั ้ ้นันจะต นจะตองมี องมีหลั หลักอยู กอยู ววา T ตอง อง commit กอนที อนที ่ ่ T จะ commit ได T จะ Read คาที ตัวอย วอยาง าง 9
8
8
9
j
9
i
T 10
9
j
i
T 11
T 12
Read(A) Read(B) Write(A) Read(A) Write(A) Read(A)
จากตารางจะไดววา T ตอง อง commit กอน อน T และ T ตอง อง commit กอน อน T ซึ ่ ่ซึงจะเกิ งจะเกิดป ดปญหา ญหา Cascading Rollback าให T และ T ถูก Rollback ไปดวย วย ซึ ่ ่ซึงเราไม งเราไมตตองการ องการ เราตองการ องการ Cascadeless Schedule Problem ถา T Fail จะทําให 12
10
11
11
11
10
12
29
Advanced Database Systems 1/49-IS20.2 Cascadeless Schedule
นิยาม ยาม จะ Read คาที าที ่ ่ Write จาก T ไดนั ้ ้นันจะต นจะตองมี องมีหลั หลักอยู กอยู ววา T ตอง อง commit กอนที อนที ่ ่ T จะ read ได ที ่ ่ทีกล กลาวมาแล าวมาแลวทั ้ ้ วทังหมด งหมด จะกลาวถึ าวถึงความถู งความถูกต กตอง อง 100 % แตในทางปฏิ ในทางปฏิบัติติแล แลวเราอาจจะไม วเราอาจจะไมตตองการความถู อ งการความถูกต กตองขนาดนั ้ ้ องขนาดนันก็ นก็ได ได ซึ ่ ่ซึงในระดั งในระดับ SQL ก็จะสามารถทํ จะสามารถทําได าได ซึ ่ ่งมี งมีตัต ้ ้ังแต งแต SQL92 แลว สรุป ทังหลายย งหลายยอม อม Recoverable ได Cascadeless Schedule ทั ้ ้ T j
i
j
i
Levels of consistency
เปนระดั นระดับของความถู บของความถูกต กตอง อง (Isolation Level) 1) Serializable – จะไดว วาเป า เปน Conflict Serializable และ View Serializable (มีบาง บาง Schedule ถูกต กตองแต องแตไม ไมออก ออก) แกปญหา ญ หา Cascadeless และ Phantom phenomenon |------------- T 1 = sum (acct) -----------|
เรียกว ยกวา Phantom phenomenon
|------ T 2 ------|
พธของ ของ T 1 (Q) ผลลัพธ
ควรจะเห็น T หรือไม อไม ควรเห็น เนื ่ ่องจากจะต องจากจะตองจะต องจะตองทํ องทํางานเสมื างานเสมือนกั อนกับว บวา T นํา T ตาม (A) ไมควรเห็ 2) Repeatable read เกือบเหมื อบเหมือน อน Serializable ยกเวนไม นไมได ไดแก แกปปญหา ญหา phantom phenomenon คือ insert เขาได าได 3) Read committed (spec) หรือ Cursor Stability (algorithm) รับประกั บประกันเพี นเพียง ยง Cascadeless เทานั านั ้ ้น รับประกั บประกันอะไรเลย นอะไรเลย 4) Read uncommitted หรือ dirty read ไมรั (Q) สมมุติ ตววิ า Cursor ชี ้ ้ชีทีท ่ ่ี row แรกมีคคา x ถา cursor เดินหน นหนาไปแล าไปแลวถอยหลั วถอยหลังกลั งกลับมา บมา ถามวาจะมี าจะมีโอกาสที ่ ่ โอกาสทีจะเห็ จะเห็น x เปนค นคาเป าเปน y หรือไม อไม 2
1
2
30
Advanced Database Systems 1/49-IS20.2
การที ่ ่ การทีจะเห็ จะเห็นค นคาเก าเกาหรื าหรือไม อไม ไมได ไดขึข ้ ้นกั นึ กับภาษาแต บภาษาแตจะขึ ้ ้ จะขึนกั นกับการ บการ set isolation level ซึ ่ ่ซึงถ งถา set เปน dirty read ก็จะเห็ จะเห็น แตถถา Set เปน repeatable read ก็จะเห็ จะเห็นค นคาเก าเกาเสมอ าเสมอ ปญหา ญหา 4 ขอใน อใน Concurrency control (A)
1. Lost update problems T A
T B
Fetch(R) :
Fetch(R)
Update(R) Update(R)
จากตาราง การ Update(R) ของ T ไดหายไป หายไป A
2. The uncommitted dependency problems T A
: Fetch(R) :
T B
Update(R) : Rollback(R)
จากตารางไดววา T ไดออานค า นคา R ซึ ่ ่ซึงถู งถูก Update โดย T และยังไม งไม commit ถาหาก าหาก T ไดนํนําค าคาที าที ่ ่ผิผดๆ ดิ ๆ ไปใช A
B
B
งก็จะได จะไดววา T A Rollback ภายหลังก็
31
Advanced Database Systems 1/49-IS20.2 3. The inconsistency analysis problems
Acc1 [40]
Acc2 [50]
Acc3 [30]
T A
Fetch(Acc1)
T B
[40]
Sum = 40 Fetch(Acc2)
[50]
Sum = 90 Fetch(Acc3)
[30]
Update Acc3 [30] [20] Fetch(Acc1)
[40]
Update Acc1 [40] [50] Commit Fetch(Acc3)
[20]
Sum = 110 not 120
เปนการวิ นการวิเคราะห เคราะหขขอมู อ มูลที ่ ่ ลทีผิผดๆ ดิ ๆ ซึ ่ ่ซึงถ งถานํ านํา T มาวิ ่ ่ มาวิงเดี งเดี ่ ่ยวๆ ยวๆ ก็จะได จะไดคคา Sum = 120 A
4. The Phantom Phenomenon
เปนป นปญหาการ ญหาการ Insert การใช Locking นั ้ ้นันจะแก นจะแกปปญหาที ่ ่ ญหาทีเกิเกิดขึ ดขึ ้ ้น ณ จุดเวลา ดเวลา แตปปญหาทั ญหาทั ้ ้ง 4 ขอที อที ่ ่กล กลาวมาแล าวมาแลวเป วเปนป นปญหาที ญหาที ่ ่เกิเกิดขึ ดขึ ้ ้น ณ ชวงเวลา วงเวลา ทําให าใหเราไม เราไมสามารถ สามารถ Lock ตามสบายใจได ดังนั ้ ้ งนันเราจึ นเราจึงต งตองใช องใช Lock Protocol เขามาช ามาชวย วย เราสามารถใช Isolation level มาแกปปญหาทั ้ ้ ญหาทัง 4 ขอนี อนี ้ ้ได ไดดัดังนี งนี ้ ้ 1) Serializable - จะแกป ปญหาทั ้ ้ ญ หาทัง 4 ขอ 2) Repeatable Read - แกป ปญหาข ญหาขอ 1, 2, 3 3) Read Committed – แกป ปญ หาขอ 2 4) Read Uncommitted - ไมได ไดแก แกปปญหาข ญ หาขอไหนเลย อไหนเลย
32
Advanced Database Systems 1/49-IS20.2
Concurrency Control Lock-based Protocol Concurrency control โดยใช Locking มีป การทํา Concurrency ปจจั จ จัย 3 อยางคื างคือ 1) Lock primitives คําสั าสั ่ ่งที งที ่ใชในการ ในการ Lock มี 2 อยาง าง - X-lock - Data Item สามารถ Read และ Write ได - S-lock – Data Item สามารถ Read ไดอย อยางเดี างเดียว ยว 2) Compatibility Matrix คําเป าเปนการบอกว นการบอกวาถ าถาเราทํ าเราทํา Lock primitives ไวแล แลวคนอื ่ ่ วคนอืนจะ นจะ Lock Primitives อะไรไดบบาง า ง S
X
S
T
F
X
F
F
ตัวอย วอยาง าง T 1
T 2
DBMS
งใหสิสทธิ ทิ ธิ Grant หมายถึงให
Lock-X(B) Grant-X(B, T 1) Read(B) B := B – 50 Write(B)
จะไดววาคํ าคําตอบไม าตอบไมถูถกเนื ่ ่ กู เนืองจากว องจากวา T ได Modify คา B ไปแลว วมา Read คา A ซึ ่ ่งเป งเปน A เกา T แลวมา แตพอ พอ T Read คา B เปน B ใหม สรุปว ปวาใน าใน Schedule นี ้ ้นี T Read คา A เกา และ B ใหม ซึ ่ ่ซึงเป งเปน Inconsistence Analysis ในรูปแบบหนึ ่ ่ ปแบบหนึง ถาจะให าจะใหถูถกแล กู แลวผลลั วผลลัพธ พธจะต จะตองเสมื องเสมือนว อนวา T นํา T ตาม 1
Unlock(B)
2
Lock-S(A) Grant-S(A, T 2) Read(A)
2
2
Unlock(A) Lock-S(B) Grant-S(B, T 2)
1
2
Read(B) Unlock(B) Display(A+B) Lock-X(A) Grant-X(A, T 2) Read(A) A :+ A + 50 Write(A) Unlock(A)
33
Advanced Database Systems 1/49-IS20.2
คือขั อขั ้ ้นตอนในการใช นตอนในการใชคํคาสั าํ สั ่ ่ง Lock และ Unlock ไมใช ใชววาจะ าจะ Lock เมื ่ ่ เมือไหร อไหรก็กได ็ไดตามสบายใจ ตามสบายใจ ซึ ่ ่ซึง Protocol ที ่นิยมใช ยมใชคืคอื 2-phase locking protocol
3) Locking Protocol
2-Phase Locking Protocol
แบงได งไดเป เปน 2 Phase คือ -
Growing phase คําถ าถา Lock ตอง อง Lock ใหหมดเสี หมดเสียก ยกอน อน และ Lock ไดอย อยางเดี างเดียว ยว Unlock ไมได ได
-
วก็จะ จะ Lock อีกไม กไมได ได Shrinking phase ถา Unlock แลวก็ Lock A
รับประกั บประกัน Conflict ซึ ่ ่งจะ งจะ Serializable ซึ แกปปญหาข ญ หาขอ 1 และขอ 3 แตข ขอ 2 ยังมี งมีโอกาส โอกาส เกิดขึ ดขึ ้ ้นได นได
Lock B
Phase I
Lock C : Unlock B Unlock A
Phase II
Unlock C
พิจารณาป จารณาปญหา ญหา 1) ปญหาข ญหาขอที อที ่ ่ 1 เมื ่ ่ เมือนํ อนํา 2-phase Locking ไปใชกักับตัวอย วอยางที ่ ่ างทีผผานมาพบว านมาพบวาคํ าคําตอบที ่ ่ าตอบทีเคยผิ เคยผิดก็ ดก็ไม ไมผิผิด แตจะเกิ จะเกิดเป ดเปน Deadlock แทน ญหาขอที อที ่ ่ 2 ยังมี งมีโอกาศเกิ โอกาศเกิดขึ ดขึ ้ ้นได นไดเนื เนื ่ ่องจากยั องจากยังมี งมีโอกาศเกิ โอกาศเกิด Transaction Fail ขึ ้ ้ขึนได นได 2) ปญหาข 3) ปญหาข ญหาขอที อที ่ ่ 3 คือวิ อวิเคราะห เคราะหขขอมู อ มูลอยู ลอยูมีมคนเข คี นเขามา ามา Update ก็ติตดิ Deadlock เชนกั นกัน ญหาขอที อที ่ ่ 4 นั ้ ้นัน 2-phase locking ยังไม งไมได ไดแก แกเนื ่ ่ เนืองจาก องจาก Insert สามารถเขาได าได 4) ปญหาข วิธีธแก แี กปปญหาข ญหาขอที ่ ่ อที 1 และ 2 จาก Deadlock เรียบร ยบรอยตั ้ ้ อยตังแต งแตตตน ซึ ่ ่งต งตองเพิ ่ ่ องเพิมเงื ่ ่ มเงือนไขจะว อนไขจะวา Lock-X ไปปลด Lock ที ่ ่ทีจุจดุ Sync Point เทานั านั ้น Lock-X ใหเรี เราเรียกว ยกวา Strict 2-phase Locking วิธีธแก แี กปปญหาข ญหาขอที ่ ่ อที 3 จาก Deadlock และ 4 ใชวิวธีธิ ี Lock ที ่ ่ระดั ระดับใหญ บใหญกว กวา row ซึ ่ ่ซึงจะเรี งจะเรียกว ยกวา multiple granularity นั ่ ่นันคื นคือถ อถาใช าใช Strict 2-phase Locking รวมกั วมกับ multiple granularity ก็จะแก จะแกปปญหาครบทั ้ ้ ญหาครบทัง 4 ขอ
34
Advanced Database Systems 1/49-IS20.2 Multiple Granularity
เปนความสามารถในการ นความสามารถในการ Lock เล็ก Lock ใหญ เพื ่ ่ เพือแก อแกปปญหาข ญ หาขอ 3, 4 และชวยลด วยลด overhead ขณะ off-peak กลาวคื าวคือ Lock เล็กๆ กๆ ขณะ peak แตเมื ่ ่ เมือเวลาที ่ ่ อเวลาทีไม ไมมีมีใครใช ใครใชงานก็ งานก็สามารถ สามารถ Lock ใหญๆไปเลยได ๆไปเลยได นการ Lock เล็กไปหาใหญ กไปหาใหญ Lock Promotion หรือ Lock Escalation เปนการ (Q) ถา DBMS ตองการ องการ Lock ขนาดใหญจะทราบได จะทราบไดอย อยางไรว างไรวามี ามี Lock ที ่ ่ทีขนาดเล็ ขนาดเล็กกว กกวาใช าใชงานอยู งานอยู การใช Intention locking เขามาช ามาชวย วย (A) จะมีการใช 1. Lock primitives สําหรั าหรับ Intention Locking นันจะถู นจะถูก share - Intention-share (IS) ถา IS node ไหน subtree ใต node นั ้ ้ - Intention-exclusive Intention-exclusive (IX) ถา IX node ไหน subtree ใต node นั ้ ้ นันจะถู นจะถูก exclusive จริง นันจะถู นจะถูก share และ subtree ใต node - Shared and intention-exclusive (SIX) ถา SIX node ไหน node นั ้ ้ นั ้ ้นันจะถู นจะถูก exclusive 2. Compatibility Matrix สําหรั าหรับ Intention Locking IS
IX
S
SIX
X
IS
T
T
T
T
F
IX
T
T
F
F
F
S
T
F
T
F
F
SIX
T
F
F
F
F
X
F
F
F
F
F
ตัวอย วอยาง าง IS
จากรูปเมื ่ ่ ปเมือต อตองการ องการ Select sum ตาราง F DBMS ก็จะปฏิ จะปฏิบับัติตติ ามขั ้ ้ ามขันตอนต นตอนตอไปนี อไปนี ้ ้ 1. ทําการ าการ intention share DB space เพื ่ ่ เพือให อให รูรูววามี า มีการ การ share จริงอยู งอยู ขขางใต า งใต นก็ทํทาการ าํ การ intention share A 2. จากนั ้ ้นก็ b
1
35
Advanced Database Systems 1/49-IS20.2 3. share F b 4.
5. 6.
ถามี ามีคนต คนตองการจะ องการจะ Exclusive b ก็จะเริ ่ ่ จะเริม IX ณ จุด DB ซึ ่ ่งจะพบว งจะพบวา DB ถูก IS อยู อยูกกอนแล อนแลว จาก Compatibility Matrix จะไดววา IS กับ IX จะเปน True ลงมาทําการ าการ IX ณ จุด A จะพบวา A ถูก IS ซึ ่ ่ซึงจะได งจะไดเป เปน True ลงมา IX ณ จุด F ซึ ่ ่ซึงจะพบว งจะพบวา F ถูก S และเมื ่ ่ และเมือ IX เจอกับ S ก็จะได จะไดเป เปน False ซึ ่ ่ซึงจะต งจะตอง อง Wait r
1
1
b
1
b
ตัวอย วอยาง าง SIX ยังงงอยู งงงอยู
36
Advanced Database Systems 1/49-IS20.2 Weak Level of Consistency
จะมีงานบางงานที ่ ่ งานบางงานทีตตองการ อ งการ Response time ดีๆ ซึ ่ ่งถ งถาใช าใช Serializability จะไมไหว ไหว ทําให าใหตตองลดความถู องลดความถูกต กตองลง องลง 1) Degree-Two Consistency
มีเจตนาที ่ เจตนาที ่จะแกปปญหาข ญ หาขอ 2 เทานั านั ้ ้นคื นคือหลี อหลีกเลี ่ ่ กเลียง ยง Cascading Abort ไมสนใจ สนใจ Serializability กลาวคื าวคือ จะตอง อง Commit กอน อน ถึงจะ งจะread ได มีการใช การใช X-Lock และ S-Lock โดยที ่ ่ โดยทีจะมี จะมีการ การ S-Lock ทั ้ ้ง Result และจะ unlock ทีละ ละ Row เมื ่ ่ เมือ Cursor วิ ่ ่ง ผานแต านแตถถามี ามีการ การ Write ก็จะทํ จะทําการ าการ X-Lock ซึ ่ ่ซึงจะ งจะ Unlock ที ่ ่จุจดุ Sync Point เทานั ้ ้ านัน 2) Cursor Stability
จะ S-Lock และ Unlock ในแตละ ละ Row แตถถามี ามีการ การ Write ก็จะทํ จะทําการ าการ X-Lock ซึ ่ ่ซึงจะ งจะ Unlock ที ่ ่จุจดุ Sync Point เทานั ้ ้ านัน ซึ ่ ่ซึงไม งไมววาจะ า จะ Move Cursor ไปขางหน างหนาหรื าหรือถอยหลั อถอยหลังก็ งก็อาจจะเห็ อาจจะเห็นของใหม นของใหมได ได างกันอย นอยางไร างไร (Q) Degree-Two Consistency และ Cursor Stability ตางกั นั ้ ้นถ นถา Cursor ชีชี ้ ้ Row ไหนก็จะ จะ Lock Row นั ้ ้นถ นถามี ามีการ การ Move Cursor ก็จะปลด จะปลด Lock แลวไป วไป Lock (A) - Cursor Stability นั านไปแลวก็ วก็ Unlock เลย) ถามี ามีการ การ Update Row ไหน Row นันั ้ ้นจะถู นจะถูก X-Lock แลวไปปลด วไปปลด Lock Row ใหม (Cursor ผานไปแล ทีที ่ ่จุจดุ Sync Point - Degree-Two Consistency เมื เมื ่ ่อ Open Cursor ก็จะ จะ S-Lock ทั ้ ้งก งกอนเลย อนเลย ซึซึ ่ ่งเมื ่ ่ งเมือ Move Cursor ไปขางหน างหนาก็ าก็จะมี จะมีการปลด นั ่ ่นคื นคือปลด Lock ขางหลั างหลังแต งแตไม ไมได ไดปลด ปลด Lock ขางหน างหนา ถามี ามีการ การ Update Row ไหน Row นั ้ ้นจะถู นจะถูก Lock ไปทีละ Row นั วไปปลด Lock ที ่ ่จุจดุ Sync Point X-Lock แลวไปปลด Timestamp-Base Protocol
1)
หลีกเลี ่ ่ กเลียง ยง Deadlock โดยใชเวลาเข เวลาเขามาเกี ่ ่ ามาเกียวข ยวของ อง 3 สวนคื วนคือ Timestamp ของ transaction เปนการ นการ Mark วา Transaction เกิดขึ ดขึ ้ ้นอาจใช นอาจใช real-time clock หรือ logical counter ซึ ่ ่ซึง oracle จะใช logical counter ซึ ่ ่ง Transaction ใดเกิดขึ ดขึ ้ ้นก นกอนก็ อนก็จะมี จะมี Timestamp นอยกว อยกวา Transaction ใดเกิดหลั ดหลังก็ งก็จะมี จะมี Timestamp มาก
2) Write Timestamp Timestamp ของ transaction เด็กสุ กสุดที ่ ่ ดที write ไดสํสาเร็ าํ เร็จ 3) Read Timestamp Timestamp ของ transaction เด็กสุ กสุดที ่ ่ ดที read ไดสํสาเร็ าํ เร็จ
37
Advanced Database Systems 1/49-IS20.2 Timestamp-Ordering Timestamp-Ordering Protocol
1)
รับประกั บประกัน Conflict Serializability กรณี Read a. ถา TS( T ) < W-Timestamp(Q) W-Timestamp(Q) แลว T จะ Read(Q) ไมได ได และตอง อง Rollback b. ถา TS( T ) ≥ W-Timestamp(Q) แลว T จึงจะ งจะ Read(Q) ไดสํสาเร็ าํ เร็จและทํ จและทําการบั าการบันทึ นทึก TS( T ) เปน Ri
i
i
i
i
Timestamp(Q) 2)
กรณี Write a. ถา TS( T ) < R-Timestamp(Q) แลว T จะ Write(Q) ไมได ได และตอง อง Rollback b. ถา TS( T ) < W-Timestamp(Q) W-Timestamp(Q) แลว T จะ Write(Q) ไมได ได และตอง อง Rollback i
i
i
c.
พิจารณาป จารณาปญหา ญหา
i
นอกนั ้ ้นก็ นก็ Write(Q) ไดสํสาเร็ าํ เร็จและทํ จและทําการบั าการบันทึ นทึก TS( T ) เปน W-Timestamp(Q) i
Acc1 [40]
Acc2 [50]
Acc3 [30]
T A
Fetch(Acc1)
T B
[40]
Sum = 40 Fetch(Acc2)
[50]
Sum = 90 Fetch(Acc3)
[30]
Update Acc3 [30] [20] Fetch(Acc1)
[40]
Update Acc1 [40] [50] Commit Fetch(Acc3)
[20]
Sum = 110 not 120
1)
2)
ปญหาข ญหาขอ 1 Lost update problem ถาเอา าเอา Timestamp protocol มาจับดู บดูจะได จะไดววา Transaction A จะ Rollback ตามกติกาข กาขอ 1a ปญหาข ญหาขอ 2 นี ้ ้นี Timestamp protocol ไมได ไดดูดแลเลย แู ลเลย เพราะวาไม าไมมีมีการเช็ การเช็คเลยว คเลยวามี ามีการ การ commit แลวหรื วหรือไม อไม และเพื ่ ่อแก อแกปปญหาข ญหาขอ 2 ก็จะให จะใหมีมี Commit bit ขึ ้ ้ขึนสํ นสําหรั าหรับแต บแตละ transaction หรืออี ออีกวิ กวิธีธหนึ หี นึ ่ ่งคื งคือใช อใช X-Lock เขาช าชวย วย กลาวคื าวคือถ อถา Update แลวยั วยังไม งไม commit ก็ให ใหติติด X-Lock ไวกกอนแล อนแลวไปปลด วไปปลด Lock ที ่ ่จุจุด Sync Point (Q) ถาหาก าหาก Timestamp Protocol เอา X-Lock เขามาเพื ่ ่ ามาเพือช อชวยแก วยแกปปญหาข ญ หาขอ 2 แลว จะมีกรณี กรณีเกิเกิด Deadlock ขึ ้ ้นหรื นหรือไม อไม เกิด Deadlock เพราะโอกาศที ่ ่ เพราะโอกาศที transaction ที ่ ่ทีมาก มากอนรอจะไม อนรอจะไมเกิเกิดขึ ดขึ ้ ้น จะมีก็กแต ็แต transaction ที ่ ่มาที มาทีหลั หลังรอ งรอ (A) จะไมเกิ
38
Advanced Database Systems 1/49-IS20.2 3)
4)
ปญหาข ญหาขอ 3 Transaction A ไมสามารถ สามารถ Fetch(Acc3) ไดเนื เนื ่ ่องจาก องจาก Acc3 ถูก Write ดวย วย Transaction B ซึ ่ ่ซึงเด็ งเด็กกว กกวา ดังนั ้ ้ งนัน Transaction A จึง Rollback ตามกติกาข กาขอ 1a ปญหาข ญหาขอ 4 หาก Transaction B เปลี ่ ่ เปลียนจาก ยนจาก Update Acc1 เปน Insert Acc4 และ Transaction A ไมสามารถ สามารถ เนืองจาก องจาก Acc4 ถูก Write โดย Transaction B ซึ ่ ่ซึงเด็ งเด็กกว กกวาดั าดังนั ้ ้ งนัน Transaction A จะ Rollback Fetch(Acc4) ไดเนื ่ ่
Thomas’ Write Rule
แตปปญหาที ญหาที ่ ่เกิเกิดขึ ดขึ ้ ้นคื นคือมี อมีการ การ Rollback บอยมาก อยมาก ซึ ่ ่ซึงจะต งจะตองหาทางว องหาทางวาไม าไมให ให Rollback พรอมกั อมกับผลลั บผลลัพธ พธก็กไม ็ไมผิผดด ดิ ดวย วย T 3
T 4
T 6
Read(Q) Write(Q) Write(Q) Write(Q)
จากตารางขางต างตนจะเห็ นจะเห็นว นวา T ไมสามารถ สามารถ Write (Q) ไดเนื เนื ่ ่องจาก องจาก Q ถูก Write โดย T ซึ ่ ่ซึงเด็ งเด็กกว กกวาดั าดังนั ้ ้ งนัน T จึง Rollback แตจากตารางจะเห็ จากตารางจะเห็นว นวาท าทายสุ ายสุด Q จะถูก Write โดย T ดังนั ้ ้ งนันจึ นจึงมี งมี ผูผคิคู ดค ดิ คนกฏขึ นกฏขึ ้ ้นว นวาถ าถาเจอกรณี าเจอกรณีแบบนี แบบนี ้ ้ ให T Ignore Write นีก็กสามารถวิ ่ ่ ็สามารถวิงได งได Schedule นี ้ ้ 3
4
6
3
3
Multiversion Timestamp Ordering
ใน Timestamp Protocol T ไมสามารถ สามารถ read r ซึ ่ ่ซึงถู งถูก write โดย T ซึ ่ ่งเด็ งเด็กกว กกวา ดังนั งนั ้ ้น T จึง Rollback และ Multiversion ก็จะ จะ เขามาแก ามาแกป ญหานี ้ ้ ญหานีโดยการไม โดยการไมให ให T write ทับแต บแตจะให จะใหตัต ้ ้ังเป งเปน version ใหม ซึ ่ ่ซึง T จะ read คา r เกา i
j
i
i
i
T i
r 0 r 1
T j
แนวคิด Write Version ใหมเสมอไม เสมอไมทัทับของเก บของเกา เวลา read ก็ read ใหถูถูก version เปนการแก นการแกปปญหาข ญหาขอ 3 และ ขอ 4
สนับสนุ บสนุน Flash Back Query หมายถึงการถามย งการถามยอนอดี อนอดีต ดนีปปญหามี ญหามีอยู อยูววา Version พวกนี ้ ้ พวกนีอยู อยู นานเท นานเทาไหร าไหร (Q) จากแนวคิดนี ้ ้ เมือ Write TS ของ version นั ้ ้นันๆ นๆ แกกว กวา Transaction ที ่ ่ทีแก แกที ่ ่ทีสุสุด (A) เมื ่ ่ (Q) (A)
จากรูปข ปขางบนในทางปฏิ างบนในทางปฏิบับัติติ r อาจจะไมได ไดอยู อยูใน ใน buffer แลวก็ วก็ได ได เมื ่ ่ เมือ T ตองการใช องการใชงานจะหา งานจะหา r มาจากไหน จาก BIJ เนื ่ ่องจาก องจาก BIJ จะเก็บ old value ใน oracle จะเก็บ BIJ ไวใน ใน DB Space เรียกว ยกวา Rollback Segment เพื ่ ่ เพือ 0
i
0
ไปสนับสนุ บสนุน Multiversion engine กรณีท ่ ่ี T หา r ใน DB Buffer หรือ Rollback Segment ไมพบ พบ Oracle จะขึ ้ ้ จะขึน message วา “Serializability cannot be achived” i
0
39
Advanced Database Systems 1/49-IS20.2
กรณี Read มี W-Timestamp เด็กสุ กสุดที ่ ่ ดทีมากกว มากกวา TS(T ) T จะ Read(Q) ที ่ ่มี กรณี Write กรณี T จะ Write(Q ) แต T ซึ ่ ่ซึงเด็ งเด็กว กวาได าได Read(Q ) ไปกอนแล อนแลวกรณี วกรณีนี ้ ้นี T จะ Write(Q ) ไมได ได T จะตอง อง นจะ Write ได (กติกานี กานี ้ ้เอาไว เอาไวดูดแลป แู ลปญหาข ญหาขอ 1) Rollback นอกนั ้ ้นจะ พิจารณาป จารณาปญหา ญหา 1) ปญหาข ญหาขอ 1 ยังมี งมีการ การ Rollback i
i
i
+1 k +1
j
T i
k
i
+1 k +1
i
T j
Read(Qk ) Read(Qk ) Write(Qk+1)
มีไม ไมสามารถ สามารถ Write(Q ) ไดเนื เนื ่ ่องจาก องจาก Q ถูก Read โดย T ซึ ่ ่ซึงเด็ งเด็กกว กกวาก ากอนดั อนดังนั ้ ้ งนัน T จึง Rollback ญหาขอ 2 มีการใช การใช commit bit 2) ปญหาข ญหาขอ 3 ผาน าน และก็ไม ไม wait 3) ปญหาข ญหาขอ 4 ผาน าน เพราะวาคน าคน write ก็ Write ไดโดยไม โดยไมตตอง อ ง Wait สวนคนเก วนคนเกาก็ าก็จะข จะขามไปโดยไม ามไปโดยไมหยิ หยิบมาอ บมาอาน าน 4) ปญหาข (Multiversion Timestamp Ordering นี ้ ้ไม ไมได ไดรัรับประกั บประกัน Recoverability และ Cascadeless) T i
k+1
k
j
i
Multiversion 2-phase locking
กรณี Read Only Transaction T จะ Read รับประกั บประกัน Recoverability และ Cascadeless ซึ ่ ่ซึงจะดู งจะดูแลป แลปญหาข ญหาขอ 1 และขอ 2 ซึ ่ ่งเป งเปนวิ นวิธีธที ่ ่ที ี Oracle ใช i
40
Advanced Database Systems 1/49-IS20.2
Query Processing (เนื ้ ้อหาบทที ่ ่ อหาบทที 13 ในหนังสื งสือ) เปนภาษาของ นภาษาของ Relational Database
ภาษาที ่ ่ ภาษาที User หรือ program ใชติตดต ดิ ตอกั อกับ DBMS เปนภาษาตระกู นภาษาตระกูล what ซึ ่ ่งเป งเปน definition ของ result ที ่ ่ตตองการโดยไม องการโดยไม ตองบอกว องบอกวาทํ าทําอย าอยางไร างไร เริ ่ ่มแรกมาจาก มแรกมาจาก Relational calculus ซึ ่ ่ซึง result ออกมาจะตรง 100 % ตางจาก างจาก information retrieval ซึ ่ ่ซึงเป งเปน procedural language ภาษาที ่ ่ ภาษาทีใช ใชภายใน ภายใน DBMS เปนภาษาตระกู นภาษาตระกูล how ซึ ่ ่งทํ งทําอย าอยางไรจึ างไรจึงจะได งจะได result และภาษาที ่ ่ support how คือ ภาษา relational algebra ซึ ่ ่ซึงเป งเปน Non procedural language ภาษาตระกูล how จะเปรียบเหมื ยบเหมือนกั อนกับ machine language ของ database
Query = ภาษา SQL ใดๆ
ตรวจไวยากรณและแปลเป และแปลเปน relational algebra Database statistics = เก็บข บขอมู อมูลต ลตางๆ างๆ ที ่ ่ทีจํจาเป าํ เปนในการทํ นในการทํา cast-based opt. นหาเสนทางที นทางที ่ ่ดีดที ่ ่ที ีสุสดโดยใช ุดโดยใช database statistics ซึ ่ ่ซึงถ งถาไม าไมมีมี Optimizer = คนหาเส สถิติตเหล เิ หลานี านี ้ ้ Optimizer จะทํา rule-based optimization
Parser and translator =
หมายเหตุ ถานํ านํา 2 table มา join กัน table1 เก็บสถิ บสถิติติ table2 ไมเก็เก็บสถิ บสถิติติ การทํางานจะเก็ างานจะเก็บสถิ บสถิติตสดๆ สิ ดๆ ของ table2 ณ ตอน query เลย ทําให าให Query ชามากกว ามากกวาไม าไมได ไดเก็เก็บสถิ บสถิติตทัทิ ้ ้ัง 2 tables
41
Advanced Database Systems 1/49-IS20.2
ตัวอย วอยาง าง SQL statement SELECT balance FROM account WHERE balance < 2500
แปลงเปน Relational algebra แลวจะได วจะได σ balance < 2500
Relational algebra
เปน Procedural language มี 8 operator หลักๆ กๆ โดยสวนของ วนของ Data ใหเขีเขียนตั ยนตัวเล็ วเล็ก สวนของ วนของ schema ใหเขีเขียนตั ยนตัวใหญ วใหญ วย σ 1) SELECT หรือ Restrict แทนดวย เลือกเฉพาะ อกเฉพาะ Tuple ที ่ ่สอดคล สอดคลองตามเงื ่ ่ องตามเงือนไข อนไข σ QTY = ' London ' s
s
วย 2) PROJECT แทนดวย เลือกเฉพาะ อกเฉพาะ
π
Column ที ่ ่ ทีตตองการ อ งการ
s
π S #, STATUS s
แทนดวย วย เปนการ นการ Match value ที ่ ่เหมื เหมือนกั อนกันของ นของ common attribute ซึ ่ ่ซึง common attribute ที ่ ่ ที ่ ่ทีปรากฏที ่ ่ ปรากฏที Output เพียงครั ้ ้ ยงครังเดี งเดียว ยว
3) Natural Join
s
s
x
r
y
x
z
x1 y1
x1 z1
x2 y2
x2 z2
x3 y3
x3 z3
r x
y
z
x1 y1 z1 x2 y2 z2 x3 y3 z3
42
Advanced Database Systems 1/49-IS20.2
ตัวอย วอยาง าง ให List S#, STATUS ของ supplier ใน London
πS#, STATUS (σCITY=’London’ s) ตัวอย วอยาง าง SELECT balance FROM account WHERE balance < 2500
เขียนเป ยนเปน Relational algebra ได 2 คําสั าสั ่ ่ง 1.
σ BALANCE < 2500 (πBALANCE(account))
πBALANCE (σBALANCE < 2500 (account)) จากนั ้ ้ จากนัน Optimizer จะดูววาวิ า วิธีธไหนดี ไี หนดีกว กวา ซึ ่ ่งจะดู งจะดูววาวิ า วิธีธไหนมี ไี หนมี disk block access นอยกว อยกวา ก็จะเลื จะเลือกวิ อกวิธีธนั ้ ้นี ัน ** ปจจุ จจุบับัน DBMS จะเลือก อก select (วิธีธที ่ ่ที ี 2) กอนเนื ่ ่ อนเนืองจากการเก็ องจากการเก็บ data จะเก็บเป บเปน row จากนั ้ ้นจึ นจึงค งคอยนํ อยนํามาตั ามาตัดเป ดเปน column ใน 2.
memory **
πBALANCE |
σBALANCE < 2500 |
account
ตัวอย วอยาง าง S ( S #, SNAME , CITY )
SP( S # , P #, QTY )
List SNAME ของ London Supplier ที ่ ่ Supply P2 SELECT SNAME FROM S, SP WHERE S.S# = SP.S# AND CITY = ‘London’ AND P# = ‘P2’ 1)
πSNAME (σP# =’P2’ (σCITY =’London’ (s πSNAME
sp)))
|
σP# =’P2’ |
σCITY =’London’ |
/ s
\ p
43
Advanced Database Systems 1/49-IS20.2 2)
πSNAME | /
\
πS#,SNAME πS# |
|
σCITY =’London’ σP# =’P2’ |
|
s
p
อก unary operator กอน อน ถา optimizer เลือก อก plan 1 เปนไปได นไปไดววาไม า ไมได ไดทํทํา index ซึ ่ ่ซึงจะต งจะตองทํ องทํา Optimizer จะเลือก Full table scan ดังนั ้ ้ งนันถ นถาทํ าทํา index ไว optimizer จะเลือก อก plan 2
การทํา Query จะมี 3 ฝายเข ายเขามาเกี ่ ่ ามาเกียวข ยวของ อง 1. คน -> เขียนคํ ยนคําสั ่ ่สัง SQL 2. DBA -> สราง าง index, เก็บ statistics 3. Optimizer -> เลือกเส อกเสนทางที นทางที ่ ่ดีดีทีท ่ ่สุสี ุด าตองการ องการ result หนึ หนึ ่ ่งจะใช งจะใชวิวธีธิ join อเรียกใช ยกใช subquery จึงจะทํ งจะทํางานได างานไดเร็เร็วกว วกวา (Q) ถาต ี join หรือเรี Select sname From S Where s# in ( Select s# From SP Where p# = ‘P2’) And city = ‘London’ (A)
ในการที ่ ่จะเลื จะเลือกใช อกใช join นันขึ ้ ้ นขึนกั นกับป บปจจั จจัยหลายอย ยหลายอยาง าง เชนยี ่ ่ นยีหหอ DBMS ก็มีมีสสวนเช ว นเชน oracle จะ join join หรือ subquery นั ้ ้ เร็วกว วกวา แตถถา DB2 เลือกใช อกใช subquery ก็จะเร็ จะเร็วกว วกวา จาก SQL Statement เปนการ นการ join ที ่ ่เรีเรียกว ยกวา semi-join ซึ ่ ่ซึงจะแบ งจะแบงเป งเปน 2 แบบคือ -
semi join positive
-
semi join negative
ในปจจุ จจุบับันมี นมีการทํ การทํา Semantic optimization ซึ ่ ่ซึงใช งใช business วยในการคนหา นหา business rule มาชวยในการค 44
Advanced Database Systems 1/49-IS20.2
ตัวอย วอยาง าง ฐานขอมู อมูลมี ลมี Business rule คือยื อยืมหนั มหนังสื งสือได อไดไม ไมเกิเกิน 5 เลม ถาต าตองการ องการ query จํานวนนั านวนนักศึ กศึกษาที ่ ่ กษาทียืยมหนั ืมหนังสื งสือ 8 เลม DBMS ตรวจสอบพบวาขั าขัดกั ดกับ business rule ก็จะ จะ return result เปน not found กลับมาโดยไม บมาโดยไมจํจําเป าเปนต นตองอ องอาน าน disk เลย ตัวอย วอยาง าง Database statistics (1) n r = จํานวน านวน tuple ของ relation r านวน block ของ relation r (2) b r = จํานวน (3) f = blocking factor ของ relation r ( r (จํานวน านวน tuple ใน 1 block) r านวน distinct value ของ attribute A (4) V ( A, r ) = จํานวน ของ Relation r (จํานวนที ่ ่ านวนทีไม ไมซ้ ํ ํซ้า) เชน V (CITY , s) มีเมื เมืองกี องกี ่ ่เมื เมืองอยู องอยูในตาราง ในตาราง s (5) SC ( A, r ) Selection cardinality คือจํ อจํานวน านวน tuple ที ่ ่มีมีคคา attribute value ของ A of row retrieved) ตามที ่ ่ ตามทีกํกาหนดให ําหนดให (No of row Selection Operation
เปน Algebra operator ซึ ่ ่ซึงจะ งจะ implement ไดหลายวิ หลายวิธีธี A1.
Linear search
ใชในกรณี ในกรณีที ่ ่ไม ไี มมีมี Index เปนการทํ นการทํา Full Table Scan Cost ของการทํา Linear Search = b r กรณีเป เปน Key attribute จะใช b Cost = r 2 A2.
Binary search
ใชในกรณี ในกรณีที ่ ่ไม ไี มมีมี Index และ data sort ตาม physical เรียบร ยบรอยแล อยแลว หรือมี อมีการทํ การทํา clustering เรียบร ยบรอยแล อยแลว การทํา Clustering หมายถึงการนํ งการนํา row ที ่ ่ใช ใชดดวยกั ว ยกันบ นบอยๆ อยๆ (Logical adjacent rows) มาเก็บไว บไวดดวยกั ว ยกัน (ใน block เดียวกั ยวกันหรื นหรือ Block ใกลเคีเคียงกั ยงกัน) และมีการ การ Sort data ในระดับ physically ทําได าไดดวยคํ ว ยคําสั าสั ่ ่ง Alter table cluster …
⎡ ⎤ n r Cost ของการทํา binary search = log 2 (b r ) + ⎢ ⎥ −1 V ( A , r ). f r ⎥ ⎢
⎡
⎤
45
Advanced Database Systems 1/49-IS20.2
ตัวอย วอยาง าง ตารางมี 1000 rows n r = 1000 มีเมื เมืองทั ้ ้ องทังหมด งหมด 100 เมือง อง V ( A, r ) = 100 Blocking factor คือ 20 f = 20 จาก r
⎡ n r ⎤ = b r ⎢ ⎥ ⎢ f r ⎥
จะไดววา b r =
จาก
1000 20
= 50
⎡ ⎤ n r Cost = log 2 (b r ) + ⎢ ⎥ −1 V ( A , r ). f r ⎥ ⎢
⎡
⎤
จะไดววา ⎡ 1000 ⎤ Cost = log 2 (50) + ⎢ −1 ⎢100 × 20 ⎥⎥
⎡
⎤
⎡ log 50 ⎤ ⎥ + ⎡0.5⎤ − 1 log 2 ⎢ ⎥
=⎢
= ⎡1.699 ⎤ + 1 − 1 ⎢⎢ 0.301⎥⎥ = ⎡5.645⎤ =6
block accesses
จาก Search Condition (Q) Index กับ key ตางกั างกันอย นอยางไร างไร ใชสสวนหนึ ่ ่ วนหนึงของ งของ relation แตเป เปนกลไกในการเข นกลไกในการเขาถึ าถึงข งขอมู อมูลให ลใหเร็เร็วขึ วขึ ้ ้น ซึ ่ ่งอาจจะมี งอาจจะมีซ้ ํ ํซ้า (A) Index ไมใช งจะเนน Uniqueness และเปนส นสวนหนึ ่ ่ วนหนึงของ งของ relation Key เปน Identifier ซึ ่ ่งจะเน (Q) Primary Index คืออะไร ออะไร (A) คือการทํ อการทํา Index บน Column ที ่ ่ระบุ ระบุ Consequence ของ table หรือกล อกลาวอี าวอีกอย กอยางหนึ างหนึ ่ ่งว งวา เปน Index ที ่ ่ที Sort ทาง เดียวกั ยวกับ Data หรือ cluster index สวน วน Secondary Index คือ Index ที ่ ่ที Sort คนละทางกับ Data A3.
Primary index, equality on key
จะใชกรณี กรณีที ่ ่ที Search key เปน Primary Index และทําการ าการ search บน column ที ่ ่ทีเป เปน candidate key Cost = HTi + 1
โดยที ่ ่ โดยที HTi เปนความสู นความสูงของ งของ index 46
Advanced Database Systems 1/49-IS20.2 A4.
Primary index, equality on non-key
จะใชกรณี กรณีที ่ ่ที Search key เปน Primary Index และทําการ าการ search บน column ที ่ ่ทีเป เปน non-key ซึ ่ ่ซึง
Cost = HTi + b r b r =
A5.1
SC ( A, r ) f r
Secondary index, equality on key
จะใชกรณี กรณีที ่ ่ที Search key เปน Secondary Index และทําการ าการ search บน column ที ่ ่เป เปน candidate key Cost = HTi + 1 A5.2
Secondary index, equality on non-key
จะใชกรณี กรณีที ่ ่ที Search key เปน Secondary Index และทําการ าการ search บน column ที ่ ่เป เปน non-key assume วา 1 row มี 1 block Cost = HTi + SC ( A, r ) ตัวอย วอยาง าง I1(PI)
I2(SI)
Select * From s Where CITY=’PARIS’
200 rows
And STATUS = 30
20 rows
กําหนดให าหนดให Blocking Factor = 25 จะไดววา CITY เปน Primary Index b r =
SC ( A, r ) f r
=
200 25
=8
STATUS เปน Secondary Index b r = SC ( A, r ) = 20
ดังนั ้ ้ งนัน Search CITY จะใช 8 blocks แต Search STATUS ใช 20 blocks งนั ้ ้นเลื นเลือก อก CITY ดีกว กวา 20 blocks ดังนั จะไดววา Cost = = HTi + 8 CITY ' PARIS '
= HTi + 20 Cost STATUS STATUS =30
47
Advanced Database Systems 1/49-IS20.2 Join Operation 1. Nested-Loop Join
ใชสัสัญลั ญลักษณ กษณ ตัวอย วอยาง าง กําหนดให าหนดให S S SP
งไมจํจําเป าเปนต นตองเป องเปน เทากั ากับ θ = Join Condition ซึ ่ ่ซึงไม
θ
SP
มี 200 rows มี 200,000 rows
10 blocks 10,000 blocks 10,000 blocks
Blocking factor = 20
กําหนดให าหนดใหทั ้ ้ทังสองตารางไม งสองตารางไมมีมี Index กรณีทีท ่ ่ี 1 S เปน Loop นอก SP เปน Loop ใน S
SP
S 1 rows S 200 rows
ใช SP ใช SP
10,000 blocks 2,000,000 blocks
จาก จํานวน านวน Block = b s + (b s × b sp) ดังนั ้ ้ งนันใช นใช S = 2,000,000 + 10 = 2,000,010 blocks กรณีทีท ่ ่ี 2 SP เปน Loop นอก S เปน Loop ใน SP
S
10 blocks ใช S SP 2,000,000 rows 10 blocks ใช S องจากวา S 10 block อยมาก สามารถเก็บใน บใน Buffer ไดตลอดไม ตลอดไมววา SP เปลี ่ ่ เปลียนไปก็ ยนไปก็ยัยังใช งใช S 10 block เดิมได มได) (เนื ่ ่องจากว 10 block นอยมาก จาก จํานวน านวน Block = b s + b sp ดังนั ้ ้ งนันใช นใช SP = 10,000+10 = 10,010 blocks สรุปได ปไดววาเอาตารางที ่ ่ า เอาตารางทีมีมขนาดใหญ ขี นาดใหญไว ไวขขางนอกดี า งนอกดีกว กวา SP 1 rows
48
Advanced Database Systems 1/49-IS20.2 2. Block Nested-Loop Join
เมื ่ ่ เมือ 2 ตารางที ่ ่ Join กันนั ้ ้ นนันมี นมีขนาดใหญ ขนาดใหญเกิเกินกว นกวาที าที ่ ่จะอยู จะอยู ใน ใน Main memory ได ซึ ่ ่ซึง memory จะมีทีท ่ ่ให ใี หลงอย ลงอยางละ างละ block เทานั ้ ้ านันในแต นในแตละ ละ table ตัวอย วอยาง าง กําหนดให าหนดให r s 1 block ของ r ใช s b s block b r Block ของ r ใช s b s × b r block ดังนั ้ ้ งนัน จํานวน านวน Disk block = br + (b s × br ) สรุปว ปวาถ าถาเอาตารางเล็ าเอาตารางเล็กไว กไวขขางนอกถึ า งนอกถึงจะดี งจะดี 3. Indexed Nested-Loop Join
Search key เปน attribute หรือ set of attribute ที ่ ่ ทีใช ใชในการ ในการ lookup record ใน files
างกันตรงไหน นตรงไหน (Q) Search key กับ Candidate key แตกตางกั าวถึง Search Condition สวน วน Candidate Key กลาวถึ าวถึง Unique Identifier (A) Search key กลาวถึ เปน index ที ่ ่ทีมีมี search key ครบทุก key value Sparse Index เปน index ที ่ ่ ทีมีมี search key ไมครบทุ ครบทุก key value นจะไดเปรี เปรียบข ยบขอเดี อเดียวตรงที ่ ่ ยวตรงทีประหยั ประหยัด space โดยที ่ ่ sparse index จะชี ้ ้ไปที ่ ่ ไปทีตตน block แลวหยิ วหยิบ Sparse index นั ้ ้นจะได มาทั ้ ้ มาทัง block จากนั ้ ้ จากนันจะเข นจะเขาไปหาใน าไปหาใน block วา row ที ่ ่ทีตตองการอยู อ งการอยูทีท ่ ่ไหน ไี หน วกวา sparse index ตรงไหน (Q) Dense index เร็วกว ครบทุก search key และ sort จึงสามารถใช งสามารถใช binary นหา index ได (A) Dense Index มีครบทุ binary search ในการคนหา ไมครบทุ ครบทุก search key ดังนั ้ ้ งนันการค นการคนหา นหา index จะตองใช องใช linear search Sparse Index มีไม แบง Search space ออกเปนช นชวงๆ วงๆ จะไดไม ไมตตอง อ ง search ทั ้งหมด มีลัลักษณะเป กษณะเปน tree และ B±Tree คือ Balance Tree Dense Index
งจะดีเพราะว เพราะวา tree ตนเตี ้ ้ นเตีย n มากจึงจะดี ในทางปฏิบับัติติ n จะขึ ้ ้ จะขึนกั นกับขนาดของ บขนาดของ search key ถา search key เล็ก n จะมาก
49
Advanced Database Systems 1/49-IS20.2 (Q) ตารางนี ้ ้มี มีกี ่ ่กี row
บที ่ ่ Dense Index Entry (A) สามารถนับที
ไดเลย เลย
HT คือความสู อความสูงของ งของ tree
⎡
⎤
HT <= ⎢log n ( K ) ⎥ 2 ⎢ ⎥
K = Search Key Value
B-Tree
B±Tree
างกับ B±Tree ตรงไหน (Q) B-Tree ตางกั (A) B-Tree นั ้ ้ นันแต นแตละ ละ node จะชี ้ ้ จะชีไปยั ไปยัง dataset ไดเลย เลย แตถา B±Tree ทุกตั กตัวจะต วจะตอง อง search จาก root ไปยัง leaf
ดังนั ้ ้ งนัน B±Tree จึงมี งมี overhead ในเรื ่ ่ ในเรืองการ องการ insert และ delete แตใช ใชงานเอนกประสงค งานเอนกประสงคกว กวา และทํา balance tree ได งายกว ายกวา
50
Advanced Database Systems 1/49-IS20.2 4. Hash Join
Static Hashing Hashing เปนการเข นการเขาถึ าถึง Data โดยไมตตองใช อ งใช index แตใช ใชการคํ การคํานวณ านวณ โดยใช Hash Function Search
Hash Function
Dataset
David Peter
John
David
Somchai
H(search key) => dataset address
จะใชในกรณี ในกรณีที ่ ่ทีมีมี Data ไมมากแต มากแต database จะเลี ่ ่ จะเลียง ยง collision ไมได ได เราตองเลื องเลือก อก Hash Function ใหเหมาะสม เหมาะสม ทีเหมาะสมกั เหมาะสมกับ 10,000 rows อาจใชไม ไมได ไดกักับ 100,000 rows นอกจากนั ้ ้ นอกจากนันก็ นก็เป เปนเรื ่ ่ นเรืองของขนาดและ องของขนาดและ data type Hash Function ที ่ ่ ของ search key วิธีธที ่ ่ที ี Database ที ่ ่จะแก จะแกปปญหาการเกิ ญหาการเกิด collision 1 bucket จะมีหลาย หลาย database block จะตองขยายขนาดเป องขยายขนาดเปน Bucket จะได Hash Cluster ถา bucket เต็มจะเกิ มจะเกิด Overflow Bucket Bucket 0
Bucket 1
Bucket 2
Overflow Bucket for Bucket 1
Bucket 3
51
Advanced Database Systems 1/49-IS20.2 Hash Index
จากรูปมี ปมีการสร การสราง าง Bucket เปนด นดานหน านหนาแล าแลวชี ้ ้ วชีไปยั ไปยัง Data ตริง ขอดี อดี มีได ไดลาย ลาย Hash Index ตอ 1 Dataset าๆจะถูกสร กสรางขึ ้ ้ างขึนมาตอนสร นมาตอนสราง าง index จํานวน านวน bucket นั ้ ้นันจะขึ ้ ้ นจะขึนอยู นอยู กักับ Hash function ที ่ ่ทีใช ใช และเมื ่ ่ และเมือเกิ อเกิด overflow ขึ ้ ้ขึนก็ นก็ Bucket เปลาๆจะถู จะมีการ การ chain bucket ขึ ้ ้นมา นมา ซึ ่ ่งปกติ งปกติแล แลว Hash Index จะมี HTi = 1 เสมอ ท ่ ่ี Hash Index Overflow เยอะเราจะทําอย าอยางไร างไร (Q) กรณีที มทิ ้ ้ง (A) Drop index เดิมทิ โดยใช Hash Function ที ่ ่เหมาะสม เหมาะสม ซึ ่ ่ซึงไม งไมมีมีผลใดๆกั ผลใดๆกับ application Create index ใหมโดยใช
52
Advanced Database Systems 1/49-IS20.2
Temporal Database มีคํคาถามว าํ ถามวาใน าใน 10 ปทีท ่ ่ผผี านมามี า นมามีใครเคยอยู ใครเคยอยูบบานเดี า นเดียวกั ยวกับคุ บคุณบ ณบาง าง ถาเป าเปนฐานข นฐานขอมู อมูลธรรมดาจะไม ลธรรมดาจะไมสามารถตอบได สามารถตอบไดเลย เลย คําถามนี ้ ้ าถามนีเป เปนการเช็ นการเช็คช คชวงเวลา วงเวลา เพื ่ ่ เพือตอบคํ อตอบคําถามเหล าถามเหลานี านี ้ ้จึจงมี งึ มี Research เกิดขึ ดขึ ้ ้นมากมายและนํ นมากมายและนําไปสู าไปสู Temporal Database ตัวอย วอยาง าง ในสหรัฐมี ฐมีเด็เด็กแฝด กแฝด 7 คนซึ ่ ่งจะมี งจะมีการเก็ การเก็บสถานะของสุ บสถานะของสุขภาพของเด็ ขภาพของเด็กแต กแตละคนในแต ละคนในแตละช ละชวงเวลาดั วงเวลาดังตาราง งตาราง
Max Value ของ Data Type Date
หรือ Infinity หมายถึงยั งยังเป งเปนจริ นจริง จนถึงป งปจจุ จจุบับัน ตารางนี ้ ้ ตารางนีเป เปนช นชวงเวลาที ่ ่ วงเวลาทีกํกาหนดเป าํ หนดเปน Close-Open Format ซึ ่ ่ซึงหมายถึ งหมายถึง From Date นั ้ ้นจะรวมเวลาที ่ ่ นจะรวมเวลาที Fact Valid แต To Date นั ้ ้น ไมรวม รวม จากรูปจะเห็ ปจะเห็นว นวา Joel Steven จะ Critical ตั ้ ้ตังแต งแต 1997-11-19 จนถึง 1997-11-20 (ไมรวม รวม) พอถึง 1997-11-20 Joel Steven จะเปลี ่ ่ จะเปลียนสถานะเป ยนสถานะเปน Serious ไปจนถึง 1998-01-03 ( ไมรวม รวม) Valid-Time State Table
หมายถึง Table ที ่ ่เก็เก็บว บวา Fact นั ้ ้นัน valid ตั ้ ้งแต งแตเมื ่ ่ เมือไหร อไหรถึถงเมื ่ ่ งึ เมือไหร อไหร ใชกักับตารางที ่ ่ บตารางทีมีมการเปลี ่ ่ กี ารเปลียนสถานะไปเรื ่ ่ ยนสถานะไปเรือยๆ อยๆ เชน เงินเดื นเดือน อน, ชื ่ ่ชือ เปนต นตน างตนเป นเปนไปได นไปไดหรื หรือไม อไมววาเก็ าเก็บเฉพาะ บเฉพาะ From Date แตไม ไมเก็เก็บ To Date (Q) จากตารางขางต าได แตการเช็ การเช็คช คชวง วง Overlap จะทําได าไดยากและอาจจะมี ยากและอาจจะมีปปญหาเรื ่ ่ ญ หาเรือง อง Fact ไมตตอเนื ่ ่ อ เนืองเช องเชนการเป นการเปนสมาชิ นสมาชิกชมรมกี กชมรมกีฬาต ฬาตางๆ างๆ (A) ทําได ตัวอย วอยาง าง EMP ( E # , ENAME , ADDR , DEPT , SALARY )
ตารางนี ้ ้ ตารางนีเดิเดิมเป มเปน 5NF แตหลั หลังจากที ่ ่ งจากทีเพิ ่ ่ เพิม fromdate และ todate เขาไปแล าไปแลวจะได วจะไดววาถ าถามี ามีการเปลี การเปลี ่ ่ยน ยน Address ทําให าใหเกิเกิด Row ใหมซึ ่ ่ซึง มี Key value เดิมทํ มทําให าใหเกิเกิดข ดขอมู อมูลซ้ ํ ํ ลซ้าซ าซอนเป อนเปนจํ นจํานวนมาก านวนมาก ดังนั งนั ้ ้น Primary Key ก็จะซ้ จะซ้ ํ ํา ซึ ่ ่งถ งถาจะให าจะใหไม ไมซ้ซ ํ ํ้าก็ าก็ตตองเอามา อ งเอามา combine กับ valid time
53
Advanced Database Systems 1/49-IS20.2
EMP
E#
ENAME
ADDR
DEPT
Temporal Attribute
SALARY
From date
To date
จากรูปไม ปไมสามารถ สามารถ Implement ใน relational database ไดเนื เนื ่ ่องจากมี องจากมี repeating group (แต implement ดวย วย object relational database ได) ซึ ่ ่งจะต งจะตองทํ องทําการแยกตารางโดยแยกเฉพาะ าการแยกตารางโดยแยกเฉพาะ attribute ที ่ ่ทีเป เปน temporal attribute ออกมาเปนตารางใหม นตารางใหม ตอมาได อมาไดมีมีการ การ ออก 6NF สําหรั าหรับ Temporal Database ขึ ้ ้นโดยมี นโดยมีนินยามคื ิยามคือ นิยาม ยาม 6 NF คือ ตารางที ่ ่ไม ไมสามารถ สามารถ Split ไดอีอีกต กตอไปแล อไปแลว ซึซึ ่ ่งเอาไว งเอาไวใช ใชกักับ temporal database โดยเฉพาะ Duplication Concept
เปนกรณี นกรณี duplicate ปกติซึ ่ ่ซึงมอง งมอง fromdate และ todate เปน attribute ธรรมดาเชน
Nonsequenced duplicate –
Value Equivalent duplicate – duplicate
เฉพาะ value โดยไมสนใจเวลาเช สนใจเวลาเชน
เฉพาะ value ณ เวลานี ้ ้ เวลานี ตัวอย วอยางเช างเชน ถาวั าวันนี ้ ้ นนีเป เปนวั นวันที นที ่ ่ 1998-01-06 จะไดววา Current duplicate คือ
Current Duplicate – duplicate
ซึ ่ ่ซึงถ งถาเวลาเปลี ่ ่ าเวลาเปลียนไปก็ ยนไปก็อาจจะมี อาจจะมีการเปลี ่ ่ การเปลียนแปลงได ยนแปลงได Sequenced Duplicate – duplicate ในชวงเวลาใดๆ วงเวลาใดๆ ก็ได ได ตัวอย วอยางเช างเชน
หรืออี ออีกตั กตัวอย วอยางคื างคือเคยอยู อเคยอยูบบานเดี านเดียวกั ยวกันบ นบางแต างแตอาจจะไม อาจจะไมจํจาเป าํ เปนต นตองอยู องอยูในเวลาเดี ในเวลาเดียวกั ยวกันก็ นก็ได ได
54
Advanced Database Systems 1/49-IS20.2
สรุปเป ปเปนตารางได นตารางไดดัดังนี ้ ้ งนี
ซึ ่ ่งรู งรูปน ปน ี ้ ้ ีอาจารย อาจารยบอกว บอกวาอาจจะไม าอาจจะไมถูถูก นิยามของ ยามของ Temporal Database นิยามที ่ ่ ยามที 1 Database ที ่ ่เก็ เก็บขอมู อมูลที ่ ่ ลทีมีมการเปลี ่ ่ กี ารเปลียนแปลงตามเวลา ยนแปลงตามเวลา (Time-varying) (นิยามนี ้ ้ ยามนียัยังไม งไมถืถือว อวาเป าเปนทางการ นทางการ) เนื ่ ่องจากสิ ่ ่ องจากสิงของบางอย งของบางอยางไม างไมมีมการเปลี ่ ่ กี ารเปลียนแปลงแต ยนแปลงแตความสามารถในการวั ความสามารถในการวัดเปลี ดเปลี ่ ่ยนแปลงไปเช ยนแปลงไปเชนความสู นความสูงของยอดเขาเมื ่ ่ งของยอดเขาเมือ 80 ป ที ่แลวกั วกับป บปจจุ จจุบับันไม นไมเท เทากั ากัน, ความสวางของดวงดาว างของดวงดาว ซึ ่ ่งวั งวัดเมื ่ ่ ดเมือ 80 ปกกอนกั อนกับป บปจจุ จจุบับันไม นไมเท เทากั ากัน นิยามที ่ ่ ยามที 2 (เปนทางการ นทางการ) สนับสนุ บสนุน แงมุมมบางแง มุ บางแงมุมุมของเวลา มของเวลา แตไม ไมนันับ user-defined time โดย user-defined time คือ Database ที ่ ่สนั Date-time ที ่ ่ ทีเป เปนส นสวนหนึ ่ ่ วนหนึงของ งของ fact เชนวั นวันเกิ นเกิด เปนต นตน หมายเหตุ ถาเวลาเป าเวลาเปนส นสวนหนึ วนหนึ ่ ่งของ งของ Fact จะไมเรีเรียก ยก temporal database เชนนาย นนาย ก เกิดวั ดวันที นที ่ ่ xx/xx/xxx แตจะถื จะถือเป อเปน user-defined time แตถ ถาเวลาเป าเวลาเปนตั นตัวระบุ วระบุววา fact นั ้ ้นัน valid ตั ้ ้งแต งแตเมื ่ ่ เมือไหร อไหรถึถงเมื ่ ่ งึ เมือไหร อไหรจะถื จะถือเป อเปน temporal database ตัวอย วอยาง าง เปนเรื ่ ่ นเรืองของปศุ องของปศุสัสัตว ตวในประเทศสหรั ในประเทศสหรัฐ ซึ ่ ่ซึงมี งมีอยู ยูชชวงหนึ ่ ่ ว งหนึงมี งมีการตรวจพบว การตรวจพบวามี ามีเนื ้ ้ เนือแช อแชจํจานวนหนึ ่ ่ าํ นวนหนึงติ งติดเชื ดเชื ้ ้อร อรายแรง ายแรง จึงต งตองมี องมีการ การ Recall เนื ้ ้อแช อแชแข็ แข็งเหล งเหลานั านั ้ ้น ปญหาคื ญหาคือจะต อจะตอง อง track ใหได ไดววาเนื ้ ้ า เนือเหล อเหลานี านี ้ ้มาจากโรงฆ มาจากโรงฆาสั าสัตว ตวไหน ไหน มาจากปศุสัตว ตวฝูฝงไหน งู ไหน และ track ตอไปอี อไปอีกว กวามี ามีฝูฝงไหนบ งู ไหนบางที ่ ่ างทีเคยอยู เคยอยูคอกเดี คอกเดียวกั ยวกับฝู บฝูงนี งนี ้ ้ แตเนื ้ ้ เนืองจากไม องจากไมมีมี information เหลานี านี ้ ้ทํทําให าใหตตอง อง recall เนื ้ ้อทั อทั ้ ้งประเทศทํ งประเทศทําให าใหเกิเกิด ความเสียหายมาก ยหายมาก จึงจํ งจําเป าเปนที ่ ่ นทีจะต จะตองเก็ องเก็บข บขอมู อมูลเรื ่ ่ ลเรืองเวลาไว องเวลาไวดดวย ว ย คอก จํานวนสั านวนสัตว ตว ลานใหอาหาร อาหาร หมายเลขฝูง
55
Advanced Database Systems 1/49-IS20.2
จากตารางเห็นว นวาฝู าฝูง 219 อยู อยูในคอกที ในคอกที ่ ่ 1 จํานวน านวน 43 ตัว ตั ้ ้งแต งแตวัวันที นที ่ ่ 1998-02-25 จนถึงสิ ้ ้ งสินเดื นเดือนกุ อนกุมภาแต มภาแตพอถึ พอถึงเดื งเดือนมี อนมีนาก็ นาก็มีมี การจับแยกไปอยู บแยกไปอยูคอกที คอกที ่ ่ 2 จํานวน านวน 23 ตัว จนถึงวั งวันที นที ่ ่ 1998-03-14 ก็เอา เอา 20 ตัวในคอกที ่ ่ วในคอกที 1 มารวมกันในคอกที นในคอกที ่ ่ 2 จนถึงป งปจจุ จจุบับัน (Q) ฝูง 219 อยู อยูในคอกไหนกี ในคอกไหนกี ่ ่ตัตัว (A) คําถามลั าถามลักษณะนี กษณะนี ้ ้จะเรี จะเรียกว ยกวา non-temporal query ซึ ่ ่ซึงเป งเปน query ที ่ ่ทีไม ไมเวลาของ เวลาของ fact เขามาเกี ่ ่ ามาเกียวข ยวของ อง นอกจากนี ้ ้ นอกจากนียัยังเป งเปน Non-sequenced Non-sequenced query ซึ ่ ่งเป งเปน query ที ่ ่ทีไม ไมสนใจเรื ่ ่ สนใจเรืองของเวลา องของเวลา ซึ ่ ่ซึงจะได งจะไดววา ผลลัพธ พธคืคอื
(Q) ปจจุ จจุบับันฝู นฝูง 219 อยู ในคอกไหนกี ในคอกไหนกี ่ ่ตัตัว
าถามลักษณะนี กษณะนี ้ ้จะเรี จะเรียกว ยกวา current query ซึ ่ ่ซึงเป งเปน query ที ่ ่ทีสนใจเฉพาะป สนใจเฉพาะปจจุ จจุบับันซึ นซึ ่ ่งจะได งจะไดววา (A) คําถามลั
ผลลัพธ พธคืคอื
เปนตั นตัวระบุ วระบุววาเป า เปนเวลาป นเวลาปจจุ จจุบับัน
เคยอยูในคอกไหนมาบ ในคอกไหนมาบาง าง (Q) ฝูง 219 เคยอยู (A) คําถามลั าถามลักษณะนี กษณะนี ้ ้จะเรี จะเรียกว ยกวา sequenced query ที ่ ่สนใจเรื ่ ่ สนใจเรืองเวลาด องเวลาดวยซึ ่ ่ วยซึงจะได งจะไดววา
ผลลัพธ พธคืคอื
56
Advanced Database Systems 1/49-IS20.2 Temporal Join
งไหนอยูในคอกเดี ในคอกเดียวกั ยวกันบ นบาง าง (Q) ฝูงไหนอยู (A) ทําได าไดโดยการ โดยการ Join ตารางเดียวกั ยวกันเข นเขาด าดวยกั วยกัน ซึ ่ ่งจะได งจะไดววา
(Q) ณ เวลานี ้ ้ เวลานีฝูฝงไหนอยู งู ไหนอยูในคอกเดี ในคอกเดียวกั ยวกันบ นบาง าง
เหตุผลที ่ ่ ผลทีใช ใช < ก็เพราะต เพราะตองการไม องการไมให ให ผลลัพธ พธออกมาซ้ ํ ํ ออกมาซ้า
(A) ซึ ่ ่ ซึงจะได งจะไดววา
(Q) ฝูงไหนเคยอยู งไหนเคยอยูในคอกเดี ในคอกเดียวกั ยวกันมาบ นมาบางในช างในชวงเวลาที ่ ่ งเวลาทีแตกต แตกตางกั างกัน (ไมจํจําเป าเปนตองอยู องอยูพร พรอมกั อมกันในเวลาเดี นในเวลาเดียวกั ยวกันก็ นก็ได ได)
าถามนีเป เปน non-sequenced query (A) คําถามนี ้ ้
ซึ ่ ่งจะได งจะไดววา
ผลลัพธ พธคืคอื
(Q) ฝูงไหนเคยอยู งไหนเคยอยูในคอกเดี ในคอกเดียวกั ยวกัน.ในชวงเวลาเดี วงเวลาเดียวกั ยวกัน (อดีต, ปจจุ จจุบับัน, อนาคต)
าถามนีเป เปน sequenced query ซึ ่ ่ซึงจะมี งจะมีได ได 4 กรณี (A) คําถามนี ้ ้ 1) L2
มาอยู มาอยูกกอน อ น จากนั ้ ้น L1 ตามมาแลวออกไปก วออกไปกอน อน แลว L2 ออกตามไป
57
Advanced Database Systems 1/49-IS20.2 2) L2 มาอยู มาอยูกกอน อ น จากนั ้ ้น L1 ตามมา แลว L2 ออกตามดวย วย L1
เหมือนกรณี อนกรณีทีท ่ ่ี 1 แต L1 และ L2 สลับกั บกัน 4) เหมือนกรณี อนกรณีทีท ่ ่ี 2 แต L1 และ L2 สลับกั บกัน ดังนั ้ ้ งนันจะได นจะไดววา 3)
กรณีที ่ ่ที 1
กรณีทีท ่ ่ี 2
กรณีที ่ ่ที 3
กรณีที ่ ่ที 4 ผลลัพธ พธคืคอื
ดังนั ้ ้ งนันการเช็ นการเช็คจะต คจะตองเช็ องเช็คทั ้ ้ คทัง 4 กรณีแล แลวเอามา วเอามา Union กัน
58
Advanced Database Systems 1/49-IS20.2 Modifying Valid-Time State Table
ความยากของเรื ่ ่ ความยากของเรืองไม องไมได ไดมีมีแค แค Select เทานั านั ้ ้นแต นแตยากที ่ ่ ยากที modify ดวย วย ตัวอย วอยาง าง ตัวอย วอยางนี างนี ้ ้เป เปนการตอนวั นการตอนวัว ดัง Diagram ขางล างลางนี ้ ้ างนี ลูกวั กวัวตั วตัวผู ว ผู
วัวตั วตัวผู ว ผู วัวตั วตัวผู ว ผูทีท ่ ่ตอนแล ตี อนแลว
ลูกวั กวัวตั วตัวเมี วเมีย
วัวตั วตัวเมี วเมีย วัวตั วตัวเมี วเมียที ยที ่ ่ตอนแล ตอนแลว
จากตารางจะไดววาฝู าฝูง 101 เปน c (calf) ตั ้ ้งแต งแต 1998-01-01 ถึง1998-03-23 และ 1998-03-23 ก็ถูถกตอนจนถึ กู ตอนจนถึงป งปจจุ จจุบับัน Insert
ถามี ามีการ การ Insert Fact ที ่ ่ทีเริ ่ ่เริมเป มเปนจริ นจริงตั ้ ้ งตังแต งแตวัวันนี ้ ้ นนี จะไดววา Delete
ถามี ามีการ การ Delete Lot 101 ในปจจุ จจุบับัน เราไมสามารถที สามารถที ่ ่จะใช จะใชววา ซึ ่ ่ซึงเป งเปน Logical delete แตตตองใช อ งใชววา
59
Advanced Database Systems 1/49-IS20.2
ในเรื ่ ่ ในเรืองของการ องของการ Update หรือ Delete จะมี 2 มุมมอง มมอง (1) General Scenario Insert, Update, Delete ไดทุ ทุกช กชวงเวลา วงเวลา (2) Restricted Scenario Insert, Update, Delete ไดเฉพาะ เฉพาะ Current เทานั ้ ้ านัน Current Delete
จากตารางขางต างตน ฝูง Lot 234 เปน Calf ตั ้ ้งแต งแต 1998-02-17 และ Plan ที ่ ่ทีจะตอนในวั จะตอนในวันที นที ่ ่ 1998-10-17 สมมุติติววาวั า วันนี นนี ้ ้เป เปนวั นวันที ่ ่ นที 29 กรกฎา 1998 ถาเราจะ าเราจะ delete ฝูง 234 ออกจาก row วันนี ้ ้ นนีจะเกิ จะเกิดอะไรขึ ้ ้ ดอะไรขึน ถาหากว าหากวาให าใหขขอมู อ มูลในอดี ลในอดีตยั ตยังอยู งอยู วิธีธคิคี ดิ 234 row แรกตองแก องแก to-date เปนวั นวันนี นนี ้ ้ และลบ row ที ่ ่ที 4 ทิ ้ ้ง ดังนั ้ ้ งนันจะได นจะไดววา
สรุปว ปวาการ าการ Delete ปจจุ จจุบับันนั ้ ้ นนันจะต นจะตองมองไปถึ องมองไปถึงอนาคตด งอนาคตดวย วย
60
Advanced Database Systems 1/49-IS20.2 Current Update
จะตองเช็ องเช็คในครบทั ้ ้ คในครบทัง 3 กรณีคืคอื
Sequence Insert
ถาจะ าจะ Insert Sequence ตองบอกด องบอกดวยว วยวา valid ตั ้ ้งแต งแตเมื ่ ่ เมือไหร อไหรถึถึงเมื ่ ่ งเมือไหร อไหร ตัวอย วอยาง าง Sequence Delete
ถาจะ าจะ Delete จะตองบอกด องบอกดวยว วยวาจะ าจะ delete เมื ่ ่ เมือไหร อไหรถึถึงเมื ่ ่ งเมือไหร อไหร ซึ ่ ่ซึงจะมี งจะมีการ การ Update ชวงเวลาใหม วงเวลาใหม ซึ ่ ่ซึงจะมี งจะมี 4 กรณีดัดังนี ้ ้ งนี Insert
Update to_date
Update to_date
61
Advanced Database Systems 1/49-IS20.2
Update from_date
Delete PV
โดย วงเวลาที Fact เดิมเป มเปนจริ นจริงอยู งอยู) PV = Period of Validity ( ชวงเวลาที ่ ่ PA = Period of Application ( ชวงเวลาที ่ ่ วงเวลาทีจะ จะ Delete)
ตัวอย วอยาง าง
ตองการ องการ Delete ฝูง 234 ในชวงเวลาตั ้ ้ งเวลาตังแต งแต 1998-10-01 ถึง 1998-10-22 เราจะตองทํ องทําให าใหครบทั ้ ้ ครบทัง 4 กรณีขขางต า งตนจะได นจะไดววา กรณีที ่ ่ที 1
กรณีที ่ ่ที 2
กรณีที ่ ่ที 3 กรณีที ่ ่ที 4
62
Advanced Database Systems 1/49-IS20.2 Sequence Update
Insert
Update to_date
Insert
Update to_date Insert
Insert Update to_date
Update from_date and to_date
63
Advanced Database Systems 1/49-IS20.2 Temporal SQL (Back in the Pens) From_date และ to_date ให DBMS ดูแล แล
Select (Q) ปจจุ จจุบับันมี นมีฝูง 219 กี ่ ่ตัตัว (A)
เปน current query
ตฝูง 219 เคยอยู เคยอยูคอกไหนกี ่ ่ คอกไหนกีตัตัว (Q) ในอดีตฝู (A)
เปน sequenced query
ตฝูง 219 เคยอยู เคยอยูคอกไหน คอกไหน เมื ่ ่ เมือไหร อไหร กี ่ ่กีตัตัว (Q) ในอดีตฝู (A)
เปน non-sequenced query
จจุบับันฝู นฝูงไหนอยู งไหนอยูคอกเดี คอกเดียวกั ยวกันบ นบางในป างในปจจุ จจุบับัน (Q) ปจจุ (A)
งไหนเคยอยูคอกเดี คอกเดียวกั ยวกันด นดวยกั วยกันบ นบาง าง (Q) ฝูงไหนเคยอยู (A)
เปน sequenced query
(Q) ฝูงไหนเคยอยู งไหนเคยอยูคอกเดี คอกเดียวกั ยวกันบ นบาง าง (ไมตตองอยู อ งอยูพร พรอมกั อมกันก็ นก็ได ได) (A)
เปน non-sequenced query
(หมายเหตุ Temporal SQL ยังไม งไมถูถกู implement ใน DBMS ยี ่ ่ยีหหอใดๆ อใดๆ)
64
Advanced Database Systems 1/49-IS20.2 Modify
งแต 1998-03-26 ถึง 1998-04-14 (Q) Insert ฝูง 234 ตั ้ ้งแต (A) เปน Sequenced insert
เอาฝูง 234 ออกตั ้ ้งแต งแต 1998-10-01 จนถึง 1998-10-22 (A) เปน Sequenced Delete (Q)
ตังแต งแต 1998-03-01 จนถึง 1998-04-01 (R) Update ฝูง 234 เปน s ตั ้ ้ (B)
เปน Sequenced Update
จะเห็นว นวาใช าใชงานได งานไดงงายขึ ายขึ ้ ้นมาก นมาก แต DBMS ก็ทํทางานหนั ํางานหนักขึ กขึ ้นเยอะ Transaction-Time State Table
จะเก็บข บขอมู อมูลที ่ ่ ลทีไม ไมได ไดเปลี ่ ่ เปลียนแปลงตามเวลา ยนแปลงตามเวลา แตขขอมู อ มูลที ลที ่ ่เปลี ่ ่ เปลียนแปลงไปนั ้ ้ ยนแปลงไปนันขึ ้ ้ นขึนอยู นอยู กักับเครื ่ ่ บเครืองมื องมือหรื อหรือความสามารถใน อความสามารถใน การวัดค ดคาในขณะนั าในขณะนั ้ ้น จากตัวอย วอยางข างขางล างลางเป างเปนการบั นการบันทึ นทึกความสว กความสวางของดวงดาว างของดวงดาว เวลาที ่ ่บับันทึ นทึก ตําแหน าแหนงของดาวบนท งของดาวบนทองฟ องฟา ชืชื ่ ่อดาว อดาว ความสวาง าง
65
Advanced Database Systems 1/49-IS20.2 Bitemporal Table
มีการเก็ การเก็บข บขอมู อมูลทั ลทั ้ ้งในส งในสวนของ วนของ Valid-Time และ Transaction Time Valid-time
เปนเวลาที นเวลาที ่ ่ Fact นั ้ ้นัน valid Transaction-time
เปนเวลาที นเวลาที ่ ่เชื ่ ่ เชือว อวา Fact นั ้ ้นัน valid (เวลาที ่ ่ เวลาทีมีมการบั กี ารบันทึ นทึก) ตัวอย วอยาง าง
จากตาราง ดาว A-1248 วัดครั ้ ้ ดครังแรกเมื ่ ่ งแรกเมือ 1998-03-12 เราเชื ่ ่ เราเชือว อวาดาว าดาว A-1248 สวาง าง 12.0 ตั ้ ้งแต งแต 1922-05-14 ถึง 9999-12-31 ตอมาเมื ่ ่ อมาเมือถึ อถึง 1995-11-15 มีการบั การบันทึ นทึกใหม กใหมและค และคนพบว นพบวามี ามีความสว ความสวาง าง 10.5
66