Professional Documents
Culture Documents
วิชา
บรรยายโดย
ภาคเรียนที่ 1/2549
คณะเทคโนโลยีสารสนเทศ
สถาบันเทคโนโลยีพระจอมเกลาเจาคุณทหารลาดกระบัง
Advanced Database Systems 1/49-IS20.2
สารบัญ
Transaction Processing Concept......................................................................5
ACID Properties ของ Transaction...........................................................................................................................7
Transaction State.....................................................................................................................................................9
Recovery ..........................................................................................................9
Failure Classification..............................................................................................................................................9
Transaction Recovery Problem Statement............................................................................................................11
หลักการ Transaction Recovery ..............................................................................................................................11
Idempotent............................................................................................................................................................12
อะไรจะเกิดขึ้นเมื่อ BIJ เต็ม .......................................................................................................................................13
อะไรจะเกิดขึ้นเมื่อ AIJ เต็ม .......................................................................................................................................13
ประเภทของ Log-based recovery............................................................................................................................13
แยกประเภทตาม Database Modification Technique................................................................................................15
Check point...........................................................................................................................................................16
Buffer Management .......................................................................................18
Log-record Buffering............................................................................................................................................19
Operating System Role in Buffer Management....................................................................................................19
Shadow Paging .....................................................................................................................................................21
Database Backup Concept .............................................................................22
Database Export/Import........................................................................................................................................23
Concurrent Execution ....................................................................................24
Conflict Serializability..........................................................................................................................................27
View Serializability ..............................................................................................................................................27
Recoverability.......................................................................................................................................................29
Cascadeless Schedule ...........................................................................................................................................30
Levels of consistency............................................................................................................................................30
2
Advanced Database Systems 1/49-IS20.2
ปญหา 4 ขอใน Concurrency control........................................................................................................................31
Concurrency Control......................................................................................33
Lock-based Protocol .............................................................................................................................................33
2-Phase Locking Protocol .....................................................................................................................................34
Multiple Granularity .............................................................................................................................................35
Weak Level of Consistency..................................................................................................................................37
Timestamp-Base Protocol.....................................................................................................................................37
Timestamp-Ordering Protocol ..............................................................................................................................38
Thomas’ Write Rule .............................................................................................................................................39
Multiversion Timestamp Ordering .......................................................................................................................39
Multiversion 2-phase locking ...............................................................................................................................40
Query Processing ...........................................................................................41
Relational algebra .................................................................................................................................................42
ตัวอยาง Database statistics.....................................................................................................................................45
Selection Operation ..............................................................................................................................................45
A1. Linear search .....................................................................................................................................45
A2. Binary search.....................................................................................................................................45
A3. Primary index, equality on key .........................................................................................................46
A4. Primary index, equality on non-key ..................................................................................................47
A5.1 Secondary index, equality on key .....................................................................................................47
A5.2 Secondary index, equality on non-key ..............................................................................................47
Join Operation.......................................................................................................................................................48
1. Nested-Loop Join...................................................................................................................................48
2. Block Nested-Loop Join........................................................................................................................49
3. Indexed Nested-Loop Join.....................................................................................................................49
4. Hash Join...............................................................................................................................................51
Hash Index............................................................................................................................................................52
3
Advanced Database Systems 1/49-IS20.2
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
ตัวอยาง
R1: รถทุกคันในบริษัทจะตองมีพนักงานรับผิดชอบ
เหตุการณ มีรถคันใหมเขามาในบริษัท
สิ่งที่ตองทําคือ
Insert รถคันใหม (ซึ่งจะไมมีทาง insert ไดเนื่องจากผิดกติกา)
Assign พนักงานรับผิดชอบรถ
เราตองทําทั้งสองกิจกรรมนี้ใหเปนหนวยเดียวกัน
Begin transaction Synchronization Point (จุดเริ่มตน/จุดสุดทายของ Transaction)
Insert รถคันใหม R1 ถูกละเมิด
Assign พนักงานรับผิดชอบรถ
End transaction Database สอดคลองตาม R1
R2: การโอนเงินจะตองไมมียอดเงินหายไปจากระบบ
เหตุการณ โอนเงินจาก A ไปยัง B จํานวน x บาท
สิ่งที่ตองทําคือ
Begin Transaction
ถอน A จํานวน x บาท R2 ถูกละเมิด
ฝาก B จํานวน x บาท
End Transaction Database สอดคลองตาม R2
5
Advanced Database Systems 1/49-IS20.2
1 Transaction มี 1 คําสั่งหรือมากกวาก็ได
เหตุการณ Update หมูเลือดของคนในประเทศจาก A เปน Z
Begin Transaction
Update A Æ Z ในระหวางปฏิบัติงานจะมีทั้ง A และ Z อยูใน Database
End Transaction Database สอดคลองกัน
(Q) กรณีที่มีการ Update ขอมูลที่เปน Volume transaction กระทบ 1 ลาน rows
กรณีที่วิ่งไปได 9 แสน Rows แลวเจออุปสรรค Transaction ไปตอไมได
ทําใหมีการ Rollback ซึ่งอาจจะทําใหเสียงานได อยากทราบวา solution คืออะไร
(A) ควรแบงเปน Transaction ยอยๆ
Synchronization point ในภาษา SQL ซึ่งเปนจุดเริ่มตนและลงทาย Transaction จะมีอยู 3 ตัวคือ
1. Commit work เปนการยืนยันการเปลี่ยนแปลงตั้งแต Sync point ลาสุดจนถึงจุด commit
เปนเหมือนคําสัญญาวาถาหลังจากนั้นขอมูลจะไมหายแน
2. Rollback work เปนการยกเลิกการเปลี่ยนแปลงตั้งแต Sync point ลาสุดจนถึงจุด Rollback
3. Set autocommit off - ถาเปน autocommit on นี่เสร็จหนึ่งคําสั่งก็จะ commit เลย
แตถาเปน autocommit off เสร็จ แตละคําสั่งจะยังไม commit จะ commit ก็ตอเมื่อ
มีคําสั่ง commit อยางชัดเจน
ตัวอยาง
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 ระหวางวิ่ง
transaction ก็จะมีการถาย Data ลง DB Space
เนื่องจาก Buffer เต็ม ดังนั้นการ Save ลง DB Space อยูกอนหรือหลัง commit ก็ได
6
Advanced Database Systems 1/49-IS20.2
ACID Properties ของ Transaction
Transaction มีคุณสมบัติ 4 ประการคือ
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
*** Atomicity นี้เปนหนาที่โดยตรงของ DBMS ***
2. Consistency : การปฏิบัติ TX โดยอิสระ จะตองรักษาความถูกตองของฐานขอมูลตาม Integrity rule
(หนาที่สวนใหญจะอยูที่โปรแกรมเมอร) โปรแกรมเมอร จะตองใส begin – end ใหถูกตอง ตัวอยางโอนเงิน
Begin TX
ถอน A
Commit TX
ถือวาไม Consistency
Begin TX
ฝาก B
Commit TX
*** Consistency นี้เปนหนาที่ของโปรแกรมเมอร 60 % และ DBMS 40 % ***
7
Advanced Database Systems 1/49-IS20.2
3. Isolation : TX ที่วิ่งรวมกันในชวงเวลาเดียวกันจะตองไมรบกวนกัน
ตัวอยาง
ถามี Ti และ Tj วิ่งรวมกัน
|------------- Ti-------------| Concurrent schedule
|------------- Tj -------------|
สิ่งที่เกิดขึ้นจะเปนไปได 2 กรณีคือ
1) |------------- Ti -------------|------------- Tj -------------| Serial schedule
2) |------------- Tj -------------|------------- Ti -------------|
Ti และ Tj วิ่ง concurrent แตใหผลลัพธเหมือนกันวิง่ Serial เราเรียกวา Concurrent Serializable schedule
สรุปวากิจกรรมที่ Ti ทําแต Tj ไมเห็น แตถาอยากใหเห็นโปรแกรมเมอรก็สามารถทําได
(Q) T1 = sum account
T2 = เปดบัญชีใหม
|----------------------- T1 -----------------------|
|------------- T2-------------|
ถามวาตามหลัก Isolation แลวผลจากการ sum account จะมีรายการของ บัญชีใหมหรือไม
(A) ตามหลัก isolation แลว T1 ไมควรเห็นรายการของ T2 ผลลัพธควรจะมีลักษณะ T1 นํา T2 ตาม
(Q) จากคําถามขางตน ถาใช Row-level locking ซึ่งเปนการ lock ที่ละ row ที่เราตองการทํางาน
เมื่อใชเสร็จก็ปลด Lock ถามวา บัญชีใหมที่ insert โดย T2 จะเขาไปเปนผลลัพธของ T1 หรือไม
(A) ตอบวาเห็น ซึ่งอธิบายไดวาจาก 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 ไดโดยไมมีการ
wait
*** Isolation นี้จัดการโดย DBMS ***
4. Durability : เมื่อ TX ปฏิบัติเสร็จแลวการเปลี่ยนแปลงนั้นจะตองอยูถาวร นั่นคือหลังจากที่มีการ commit แลว
ไมวาจะเกิดอะไรขึ้น DBMS เปนผูรับผิดชอบ
8
Advanced Database Systems 1/49-IS20.2
Transaction State
สถาะของ TX มีอยู 5 สถานะคือ
1. Active : คําสั่งใน TX กําลังถูกปฏิบัติงานอยู
2. Partially committed : คําสั่งสุดทายใน TX ถูกปฏิบัติแลว
3. Failed : TX ไมสามารถถูกปฏิบัติตอไปได
4. Aborted : TX ถูก rollback แลว
5. Committed : TX ยืนยันการเปลี่ยนแปลงเรียบรอยแลว ถามีการ lock จะมีการปลด lock ที่จุด commit
Failed Aborted
Recovery
เราจะ ทิ้งบทที่ 15 ไวแคนี้กอนไปดูเรื่อง Recovery ในบทที่ 17 กันกอน
Failure Classification
การ Fail จะมีดวยกัน 3 รูปแบบคือ
1. Transaction Failure: เปนการ Failure เฉพาะ TX นั้น ทําใหไมสามารถปฏิบัติตอไปอีกไดซึ่งจะ Rollback ในที่สุด
- Logical Error: เกิดจาก code program ไมถูก, input ผิด format
- System Error: เกิดจาก Database System software อยูในสถาะอันไมพึงประสงค
เชน Deadlock, log file เต็ม
2. System Crash : คือพังทั้งระบบทําใหระบบไมสามารถทํางานตอไปได ซึ่งอาจจะเกิดจาก Hardware, Software
malfunction บางตัวมีปญหา โดยที่ Disk ไมได crash เชน power fail, main board เสีย, network card พัง,
Memory พัง หรือในบาง DBMS เมื่อ buffer มีการขยายขนาดจนเต็มทําใหแฮงคไป ซึ่งเปน Bug ของ software
Failure ในแบบที่ 1 และ 2 นี้มนุษยไมจําเปนตองเขามาเกี่ยวของในสวนของ Recovery
3. Disk Crash: Disk มีปญหา ซึ่งการ recovery จะตองมีมนุษยเขามาเกี่ยวของดวย
9
Advanced Database Systems 1/49-IS20.2
Storage Structure
1. Volatile storage : ไฟดับแลวหาย
2. Nonvolatile storage : ไฟดับไมหาย DB Space จะถูกเก็บไวใน nonvolatile storage
3. Stable storage : เปน Storage ที่ไมมีวันหาย log file จะถูกเก็บไวใน stable storage ซึ่งถา log file
เสียหายจะ 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 ก็ได
Input และ Output หมายถึงการถายขอมูลระหวาง DB Buffer กับ DB space
10
Advanced Database Systems 1/49-IS20.2
Transaction Recovery Problem Statement
ปญหาที่เกี่ยวของกับการทํา Transaction Recovery มีดวยกัน 2 ขอ
1. มี Transaction ที่ commit แลวแตยังไม output ลง DB Space ถาเกิด failure ทําอยางไรจึงจะอยูถาวรบน DB
Space?
2. มี Transaction ที่ยังไม commit แตการเปลี่ยนแปลงบางสวนไดถูก output ลง DB Space เรียบรอยแลว
ถาเกิด Failure ขึ้นมาทําอยางไรจึงจะยกเลิกการเปลี่ยนแปลงเหลานั้นออกจาก DB Space?
ปญหาทั้ง 2 ขอนั้นมีทางแกซึ่งจะใช Logfile เขามาชวยในการ recovery เราเรียกวา Log-based recovery
Logfile หรือ journal นั้นเก็บรายการเปลี่ยนแปลงที่เกิดขึ้นทุกครั้งทั้งที่ commit และ ไม commit มีลักษณะเปน Text
File ทําใหมีการบันทึกไดงายกวา
Logfile ก็จะมี Log record
<Ti start> Æ จุดที่ Transaction Ti เริ่มตนขึ้น
<Ti, Xj, V1, V2> Æ Xj =data item อะไร record ไหน row ไหน, V1 =old value, V2 =new value
(ตรงนี้มีรูป)
(Q) ถาถามวา Commit จริงๆคืออะไร อยูตรงไหน
(A) ถามีการ output log record สําเร็จเมื่อไหรจุดนั้นจะเรียกวา Physical commit
*** จุดสําคัญคือ log record จะถูก output ไป logfile กอน DB Buffer จะ output ลง DB Space ได
เปน Protocol สําคัญเรียกวา Write Ahead Protocol หรือ Write Ahead Logging (WAL) ***
หลักการ 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 จาก log buffer ไปลง logfile
(A) คําตอบมี 2 แนว
- As soon as possible - พอมี commit record เกิดขึ้นเมื่อไหรจะรีบไลลง logfile ทันที
- Group commit - รวบรวม Log record ใหเต็ม block เสียกอนแลวคอย output ลง log file เนื่องจากอาจจะมี
commit ไดหลายๆ คําสั่งทําให I/O busy นอยลง Log File เต็มชาลง แต user รับความเสี่ยงมากขึ้น ปจจุบันนี้ถือวา group
commit เปนวิธีที่นิยม เหตุผลเบื้องหลังคือ เมือ่ กอน Hardware ไมคอยเสถียรเมื่อเจอ commit ก็ตองรีบลง logfile แตในปจจุบัน
Hardware เสถียรมาก group commit จึงเปนวิธีที่ดีกวา
(Q) ทําไม logfile เก็บ old value กับ new value แทนที่จะเก็บคําสั่ง
(A) Recovery process จะตอง idempotent ซึ่งการเก็บ old value กับ new value จะ implement idempotent ไดงายกวา
Idempotent
Idempotent – ปฏิบัติงานหลายๆครั้งไดผลเหมือนกับปฏิบัติเพียงครั้งเดียว
(Q) เมื่อไหร content ของ logfile จะถูกบันทึกลง DB Space?
(A) ในภาวะการณปกติ content ของ log file ไมเคยจะตอง output ลง DB Space แตในขณะ recovery
Old value ใน undo list จะไป undo DB Space
New value ใน redo list จะไป redo DB Space
ปจจุบันมีการแยกเก็บระหวาง New value และ old value
New value จะถูกเก็บไวใน logfile ที่เรียกวา after image journal (AIJ) บางระบบเรียกวา redo logfile
Old value จะถูกเก็บไวใน logfile ที่เรียกวา before image journal (BIJ)
AIJ BIJ
เหตุผลที่ตองแยกก็เพื่อที่จะประหยัด Space เพราะวา content ของ BIJ เมื่อ commit เรียบรอยแลวก็สามารถที่จะ recycle ได
** มีคํากลาววาการมี Logfile เหลานี้ชวยให recover ไดก็จริง แตจะทําให performance มีปญหาเนื่องจากจะทําให I/O เพิ่มขึ้น ซึ่ง
เปนคํากลาวที่ผิด **
ซึ่งปญหาที่ Commit ชา มักจะเกิดจากการไมมี logfile เนื่องจากการ output ไปยัง DB Space ทําไดยากกวา output ไปยัง logfile
12
Advanced Database Systems 1/49-IS20.2
(Q) เวลาทํา redo นั้นจะ redo ตั้งแตจุดไหน
(A) จะทําการ redo ตั้งแตหลังจุด check point ซึ่งเปนจุดที่บังคับให DB Buffer มีการ output ไปยัง DB Space พรอม
กับทิ้ง Marker
อะไรจะเกิดขึ้นเมื่อ BIJ เต็ม
(Q) อะไรเปนสาเหตุให BIJ เต็ม
(A) เกี่ยวของกับ Volume Transaction ซึ่งทําให BIJ เต็มแลวยังไม Commit
เมื่อ 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 จะไมมีวันเต็ม หลักการคือ จะให AIJ มีหลายชุดเมื่อเต็มชุดหนึ่งก็จะ switch ไปใชอีกชุดหนึ่ง
จากนั้น AIJ ตัวเกาก็จะ archive log เพื่อเก็บไวใชตอน recovery และ AIJ ก็สามารถที่จะ clear ได
ประเภทของ Log-based recovery
(1) BIJ Only (ไมมี AIJ)
การ 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 ไป
หมดแลว
ขอดี
1. ประหยัด space ในสวนของ AIJ
2. Recovery เร็วขึ้นอีกเนื่องจากไมตอง redo
3. ไมเกิดปญหา AIJ เต็ม
ขอเสีย
1. Commit ชาเนื่องจากตองรอใหลง DB Space ครบถวนเสียกอนทําให Transaction อื่นตองรอใชทรัพยากร
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 ไดเร็วขึ้น
(2) AIJ Only (ไมมี BIJ)
AIJ
DB Buffer DB Space
การ Commit เปนการบันทึก commit record ลง logfile ถายังไม Commit ก็จะไมมีการ output modified buffer ของ
transaction นั้นลง DB Space
ขอดี
1. commit เร็วมาก (Fast Commit) เนื่องจากระหวางการปฏิบัติ transaction มีการ output ของ logfile
เทานั้น
2. ประหยัด space ในสวนของ BIJ
3. ตัดปญหา BIJ เต็ม
4. Recovery เร็วเนื่องจากไมตอง undo
14
Advanced Database Systems 1/49-IS20.2
ขอเสีย
1. ไมเหมาะกับ 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
(1) Deferred database modification Æ commit กอนจึงจะถายจาก DB Buffer ลงสู Db Space ไดเทียบกับ AIJ Only
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
(Q) เมื่อเกิด Failure ขึ้นจะมีการ redo และ undo ถามวา undo ยอนถึงไหน และ redo ยอนถึงไหน
(A) Undo จะยอนถึง Sync point ลาสุด
Redo จะตองมี Check point เขามาเกี่ยวของ โดยเปนจุดที่บอกวา ณ จุดนี้ไดมีการ Output ไปยัง DB Space
เรียบรอยแลวซึง่ สามารถบอกไดวาจะทํา 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
Redo
T2
Undo
T3 Redo
T4
Undo
T5
TC = จุด Check point
TF = จุดที่ Fail
T1 = คือ commit กอน check point
T2 = คือ commit หลัง check point
T3 = คือ start กอน check point แลว fail
T4 = คือ start และ commit หลัง check point
T5 = คือ start หลัง check point แลว fail
(Q) จุด check point ควรทําถี่แคไหน
(A) ถา check point ถี่การกูคืนก็จะทําไดเร็ว แตอาจจะทําให system สะดุดเปนชวงๆ ได เพราะระหวางนี้มันทํางานอื่นไมได
ในกรณีที่มี AIJ หลาย file รอยตอระหวาง file คือจุด default check point
16
Advanced Database Systems 1/49-IS20.2
ถาตัวที่ 1 เต็มและมาใชตัวที่ 2 มีการ Fail เกิดขึ้น ในการ redo ทําถึงจุอ Check point ลาสุดคือจะอางถึง content ของ logfile
ปจจุบันเทานั้น ไมจําเปนตองไปอางถึง Content ของ logfile กอนหนา
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) ถา File Manager กับ DBMS คุยกันไมคอยรูเรือ่ ง จะเกิดอะไรขึ้น
(A) จะเห็นวาคอขวดจะไปอยูที่ 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 ไดนั้น log record จะตอง output ลง stable storage เสียกอน
Database ฺBuffering
Log buffer
B1
(2)
DB Space
(3)
B2
19
Advanced Database Systems 1/49-IS20.2
User
DBMS
DBMS
File Manager
Disk Manager
DBMS
DB Buffer
แบบที่ 1
1. เร็วขึ้นในกรณีที่ DBMS และ File Manager ทํางานไมสัมพันธกัน
2. ขนาดของ Buffer fix ทําใหใชประโยชนไมเต็มที่ หาก Buffer เหลือก็ไมสามารถเอาไปใชกับงานอื่นได
และหาก Buffer ไมพอก็ไมสามารถขยายขนาดได เนื่องจาก Fix ขนาดอยู (ขนาดของ Buffer สามารถกําหนด
เปน Parameter ในการทํา performance tuning)
20
Advanced Database Systems 1/49-IS20.2
แบบที่ 2
1. ใช memory ไดอยางคุมคา ทําใหการใชทรัพยากรดีขึ้น
2. เปนไปไดวาถาไมใช Buffer ไปซักระยะ ก็จะถูก page-out และเมื่อตองการใชงานก็ตองเสียเวลา page-in เขามาอีก
สรุปวาถา DBMS กับ OS ถูกคูกันก็ใชแบบที่ 2 และถาไมถูกคูกันก็ใชแบบที่ 1
Shadow Paging (หัวขอนี้ใน 5th edition ตัดทิ้ง)
การใช Log-based recovery มีขอเสียคือตองใชเวลาในการ redo undo การใช shadow paging จะเหมือนกับโทรทัศน
คือเปดปุบติดปบ ไมตองรอ แตจะใชกับระบบเล็กๆ
21
Advanced Database Systems 1/49-IS20.2
Database Backup Concept
เราทํา Backup เพื่อกู database กรณีเกิด Disk Failure แบงเปน 2 ลักษณะคือ
1. Volume Backup Î เปนการ Backup ทั้ง DB Space ซึ่งถาขอมูลไมมากนัก จะทํา Volume Backup ทุกวันก็ได
2. Incremental Backup Î เปนการ Backup เฉพาะสวนเปลี่ยนแปลง หรือ log achieve (AIJ)
Incremental Backup
Merge
TUE log Wed morning
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
- เพื่อทํา DB Transportation จากระบบหนึ่งไปเปนอีกระบบหนึ่ง โดยที่ Design เหมือนเกา
- Physical Database 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
23
Advanced Database Systems 1/49-IS20.2
Concurrent Execution
การที่ Transaction ถูกปฏิบัติรวมกันในเวลาเดียวกัน โดยอาศัยหลักการที่วา CPU ทํางานเร็วกวา I/O
Feature ของการทํา transaction
1. Correctness - จะเนนวาขอมูลที่ไดจะตองถูกตอง
2. Productivity – ทํางานเสร็จไดเร็วขึ้น
Outline ในการบรรยาย
1) ความถูกตองคืออะไร ในการทํา Concurrent Execution
2) ถาอยากไดความถูกตองเราตอง Set server/application อยางไรบาง ซึ่งจะมีหลายระดับ
3) ปญหาอุปสรรคที่ตองฝาฟน 4 ประการ
4) Set isolation แลวจะแกปญหาอะไร
5) DBMS ใชเทคโนโลยีแบบไหนถึงจะไดความถูกตองเหลานัน้
Concurrent Execution
ACID Properties เรื่องของ Concurrent Execution คือวาถามี 2 Transaction วิ่งรวมกันจะตองไมเห็นกัน
ถามี Ti และ Tj วิ่งรวมกัน |------------- Ti-------------|
Serializable Concurrent schedule
|------------- Tj -------------|
ใหผลลัพธเหมือนกับ |------------- Ti -------------|------------- Tj -------------| Serialize Schedule
ตัวอยาง Schedule 1 การโอนเงินซึ่งเปน Serial Schedule ที่ T1 นํา T2 ตาม
T1 T2
Read(A) หมายเหตุ
A := A – 50 Schedule เปนการจัดลําดับการปฏิบัติงานของคําสั่งใน Transaction
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 ที่ T2 นํา T1 ตาม
T1 T2
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)
25
Advanced Database Systems 1/49-IS20.2
(Q) Write (A) ใน T2 และ Read(B) ใน T1 สลับที่กันไดหรือไม
(A) สลับไดเพราะวาเปนคําสั่งที่ปฏิบัติบนคนละ Data item กันจะกลาวไดวาเปนคําสั่งที่ไม conflict
15.7, 15.8, 15.9 เปน Conflict Equivalent Schedule ซึ่งแปลงรูปไปมาซึ่งกันและกันได โดยการสลับตําแหนงคําสั่งที่ไม
conflict
15.7, 15.8 เปน Conflict Serializable Schedule เพราะวา Conflict Equivalent กับ Serial Schedule
(Q) ถาใหรูปมาแลวถามวา Conflict Serializable Schedule หรือไม
(A) ใหดูวาสลับแลวจะกลายเปน Serial Schedule หรือไม สามารถสลับตําแหนงคําสั่งที่ไม conflict กันไดมั๊ย
(Q) ถาถามวาสลับแลวผลลัพธถูกตองหรือไม
(A) ใชวิธีแทนคาไดเลย
สรุปนิยามของ Conflict
Transaction จะ conflict กันไดก็ตอเมื่อ 2 คําสั่งนั้นมาจากคนละ transaction กันและปฏิบัติงานบน Data item เดียวกัน
1 ใน 2 นั้นเปนคําสั่ง write
T3 T4
Read(Q) ผลลัพธสุดทายไมเหมือน Serial Schedule
Write(Q)
Write(Q) และ conflict
(Q) จากรูป 15.11 ถามวาถูกตองหรือไม
T1 T5
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 หรือไม
(A) ไม เนื่องจากมีการ read กับ write บน B ดวยกัน จึงสลับกันไมได ดังนั้นจึงไม Conflict Serializable
(Q) จากรูป 15.12 ถามวาถูกตองหรือไม
T3 T4 T6
Read(Q)
Write(Q)
Write(Q)
Write(Q)
(A) ถูกตอง
(Q) Conflict Serializable หรือไม
(A) ไม เนื่องจากมีการ write บน Q ดวยกัน จึงสลับกันไมได ดังนั้นจึงไม Conflict Serializable
Conflict Serializability
15.11 15.10 ผิดและไม Conflict Serializable Schedule
15.12 ถูกตองแตไม Conflict Serializable Schedule
15.7 ถูกตองเปน View Serializable แตไม Conflict Serializable Schedule
15.8
ถูกตองและ Conflict Serializable Schedule
นิยาม
Schedule นี้จะเปน Conflict Serializable Schedule ก็ตอเมื่อ Schedule นั้น Conflict Equivalent กับ Serial
Schedule
View Serializability
จากรูป 15.12 จะเห็นวาคําตอบถูกตองแตไม Conflict Serializable ดังนั้นจึงมีอีกมาตรฐานหนึ่งขึ้นมาเรียกวา View
Serializable Schedule
นิยาม
Schedule นี้จะเปน View Serializable 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 Ti Read(Q) เปนคนแรกใน Schedule S ก็จะตอง Read(Q) เปน
คนแรกใน Schedule S’ดวย
2) ใน Schedule S ถา Ti Read(Q) ซึ่งถูก Write(Q) โดย Tj ใน Schedule S’ Ti ก็จะตอง Read(Q) ซึ่งถูก
Write(Q) โดย Tj เชนกัน
3) สําหรับแตละ data item Q ใดๆ ถา Transaction Ti Write(Q) เปนคนสุดทายใน Schedule S ก็จะตอง Write(Q)
เปนคนสุดทายใน Schedule S’ดวย
*** Schedule ใดก็ตามที่ Conflict Serializable ก็ยอมจะ View Serializable ดวยเชนกัน ***
T1 T2 T1 T2
Read(A) Read(A)
Write(A) Write(A)
Read(A) Read(B)
Write(A) Write(B)
Read(B) Read(A)
Write(B) Write(A)
Read(B) Read(B)
Write(B) Write(B)
Schedule S Schedule S’
จะเห็นวา
1) ใน Schedule S T1 Read(A) เปนคนแรกใน Schedule S’ T1 ก็ Read(A) เปนคนแรกเชนเดียวกัน
2) ใน Schedule S T1 Read(B) เปนคนแรกใน Schedule S’ T1 ก็ Read(B) เปนคนแรกเชนเดียวกัน คุณสมบัติขอ 1 ผาน
3) ใน Schedule S T2 Write(A) เปนคนสุดทายใน Schedule S’ T2 ก็ Write(A) เปนคนสุดทายเชนเดียวกัน
4) ใน Schedule S T2 Write(B) เปนคนสุดทายใน Schedule S’ T2 ก็ Write(B) เปนคนสุดทายดังนั้น คุณสมบัติขอ 3 ผาน
5. ใน Schedule S T2 Read(A) ซึ่งถูก Write(A) โดย T1 ใน Schedule S’ T2 Read(A) ซึ่งถูก Write(A) โดย T1
เชนเดียวกัน
6. ใน Schedule S T2 Read(B) ซึ่งถูก Write(B) โดย T1 ใน Schedule S’ T2 Read(B) ซึ่งถูก Write(B) โดย T1
เชนเดียวกันคุณสมบัติขอ 2 ผาน และสรุปไดวา 2 Schedule นั้น View Equivalent กัน ดังนั้น Schedule S จึงเปน View
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 เทานั้น ยังไมไดมี
Failure เขามาเกี่ยวดวย ดังนั้นจึงมี Recoverable Schedule ซึ่งจะมีการพิจารณา Failure เกิดขึ้น
T8 T9
Read(A)
Write(A)
Read(A)
Read(B)
:
Fail
จากตารางจะเห็นวา T9 จากมีการ Read(A) ซึ่ง Write(A) โดย T8 แตสุดทาย T8 Fail และ Rollback ดังนั้นทําให T9 Read(A) ที่
ผิด ๆ ไป ซึ่งมองตามหลักการแลวนาจะ Rollback T9 ดวย แตเปนไปไมไดเนื่องจากวา T9 ได commit ไปแลว ลักษณะการจัด
แบบนี้เรียกวา Nonrecoverable Schedule ซึ่งเราไมอยากได
นิยาม
Tj จะ Read คาที่ Write จาก Ti ไดนั้นจะตองมีหลักอยูว า Ti ตอง commit กอนที่ Tj จะ commit ได
ตัวอยาง
T10 T11 T12
Read(A)
Read(B)
Write(A)
Read(A)
Write(A)
Read(A)
จากตารางจะไดวา T12 ตอง commit กอน T11 และ T11 ตอง commit กอน T1 0 ซึ่งจะเกิดปญหา Cascading Rollback
Problem ถา T1 0 Fail จะทําให T11 และ T12 ถูก Rollback ไปดวย ซึ่งเราไมตองการ เราตองการ Cascadeless Schedule
29
Advanced Database Systems 1/49-IS20.2
Cascadeless Schedule
นิยาม
Tj จะ Read คาที่ Write จาก Ti ไดนั้นจะตองมีหลักอยูวา Ti ตอง commit กอนที่ Tj จะ read ได
ที่กลาวมาแลวทั้งหมด จะกลาวถึงความถูกตอง 100 % แตในทางปฏิบัติแลวเราอาจจะไมตองการความถูกตองขนาดนั้นก็ได
ซึ่งในระดับ SQL ก็จะสามารถทําได ซึ่งมีตั้งแต SQL92 แลว
สรุป
Cascadeless Schedule ทั้งหลายยอม Recoverable ได
Levels of consistency
เปนระดับของความถูกตอง (Isolation Level)
1) Serializable – จะไดวาเปน Conflict Serializable และ View Serializable (มีบาง Schedule ถูกตองแตไมออก)
แกปญหา Cascadeless และ Phantom phenomenon
|------------- T1 = sum (acct) -----------|
เรียกวา Phantom phenomenon
|------ T2 ------|
30
Advanced Database Systems 1/49-IS20.2
(A) การที่จะเห็นคาเกาหรือไม ไมไดขึ้นกับภาษาแตจะขึ้นกับการ set isolation level ซึ่งถา set เปน dirty read ก็จะเห็น
แตถา Set เปน repeatable read ก็จะเห็นคาเกาเสมอ
ปญหา 4 ขอใน Concurrency control
1. Lost update problems
TA TB
Fetch(R)
: Fetch(R)
Update(R)
Update(R)
จากตาราง การ Update(R) ของ TA ไดหายไป
2. The uncommitted dependency problems
TA TB
: Update(R)
Fetch(R) :
: Rollback(R)
จากตารางไดวา TA ไดอานคา R ซึ่งถูก Update โดย TB และยังไม commit ถาหาก TB Rollback ภายหลังก็จะไดวา TA
ไดนําคาที่ผิดๆ ไปใช
31
Advanced Database Systems 1/49-IS20.2
3. The inconsistency analysis problems
Acc1 [40] Acc2 [50] Acc3 [30]
TA TB
Fetch(Acc1) [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
เปนการวิเคราะหขอมูลที่ผิดๆ ซึ่งถานํา TA มาวิ่งเดี่ยวๆ ก็จะไดคา Sum = 120
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 มีปจจัย 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
ตัวอยาง
T1 T2 DBMS
Lock-X(B) Grant หมายถึงใหสิทธิ
Grant-X(B, T1)
Read(B)
B := B – 50 จะไดวาคําตอบไมถูกเนื่องจากวา
Write(B) T1 ได Modify คา B ไปแลว
Unlock(B) T2 แลวมา Read คา A ซึ่งเปน A เกา
Lock-S(A)
Grant-S(A, T2) แตพอ T2 Read คา B เปน B ใหม
Read(A) สรุปวาใน Schedule นี้ T2 Read คา A เกา และ B ใหม
Unlock(A) ซึ่งเปน Inconsistence Analysis ในรูปแบบหนึ่ง
Lock-S(B)
Grant-S(B, T2) ถาจะใหถูกแลวผลลัพธจะตองเสมือนวา T1 นํา T2 ตาม
Read(B)
Unlock(B)
Display(A+B)
Lock-X(A)
Grant-X(A, T2)
Read(A)
A :+ A + 50
Write(A)
Unlock(A)
33
Advanced Database Systems 1/49-IS20.2
3) Locking Protocol Æ คือขั้นตอนในการใชคําสั่ง Lock และ Unlock ไมใชวาจะ Lock เมื่อไหรก็ไดตามสบายใจ
ซึ่ง Protocol ที่นิยมใชคือ 2-phase locking protocol
2-Phase Locking Protocol
แบงไดเปน 2 Phase คือ
- Growing phase Æ คําถา Lock ตอง Lock ใหหมดเสียกอน และ Lock ไดอยางเดียว Unlock ไมได
- Shrinking phase Æ ถา Unlock แลวก็จะ Lock อีกไมได
Lock A
รับประกัน Conflict Lock B Phase I
Serializable ซึ่งจะ Lock C
แกปญหาขอ 1 และขอ :
3 แตขอ 2 ยังมีโอกาส Unlock B
เกิดขึ้นได Unlock A Phase II
Unlock C
พิจารณาปญหา
1) ปญหาขอที่ 1 เมื่อนํา 2-phase Locking ไปใชกับตัวอยางที่ผานมาพบวาคําตอบที่เคยผิดก็ไมผิด แตจะเกิดเปน Deadlock แทน
2) ปญหาขอที่ 2 ยังมีโอกาศเกิดขึ้นไดเนื่องจากยังมีโอกาศเกิด Transaction Fail ขึ้นได
3) ปญหาขอที่ 3 คือวิเคราะหขอมูลอยูมีคนเขามา Update ก็ติด Deadlock เชนกัน
4) ปญหาขอที่ 4 นั้น 2-phase locking ยังไมไดแกเนื่องจาก Insert สามารถเขาได
วิธีแกปญหาขอที่ 1 และ 2 จาก Deadlock
Lock-X ใหเรียบรอยตั้งแตตน ซึ่งตองเพิ่มเงือ่ นไขจะวา Lock-X ไปปลด Lock ที่จุด Sync Point เทานั้น
เราเรียกวา 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 Promotion หรือ Lock Escalation เปนการ Lock เล็กไปหาใหญ
(Q) ถา DBMS ตองการ Lock ขนาดใหญจะทราบไดอยางไรวามี Lock ที่ขนาดเล็กกวาใชงานอยู
(A) จะมีการใช Intention locking เขามาชวย
1. Lock primitives สําหรับ Intention Locking
- Intention-share (IS) Æ ถา IS node ไหน subtree ใต node นั้นจะถูก share
- Intention-exclusive (IX) Æ ถา IX node ไหน subtree ใต node นั้นจะถูก exclusive จริง
- Shared and intention-exclusive (SIX) Æ ถา SIX node ไหน node นั้นจะถูก share และ subtree ใต 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
35
Advanced Database Systems 1/49-IS20.2
3. share Fb
4. ถามีคนตองการจะ Exclusive r
b1 ก็จะเริ่ม IX ณ จุด DB ซึ่งจะพบวา DB ถูก IS อยูกอนแลว
จาก Compatibility Matrix จะไดวา IS กับ IX จะเปน True
5. ลงมาทําการ IX ณ จุด A1 จะพบวา A1 ถูก IS ซึ่งจะไดเปน True
6. ลงมา IX ณ จุด Fb ซึ่งจะพบวา Fb ถูก S และเมื่อ IX เจอกับ S ก็จะไดเปน False ซึ่งจะตอง Wait
ตัวอยาง 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 ตางกันอยางไร
(A) - Cursor Stability นั้นถา Cursor ชี้ Row ไหนก็จะ Lock Row นั้นถามีการ Move Cursor ก็จะปลด Lock แลวไป Lock
Row ใหม (Cursor ผานไปแลวก็ Unlock เลย) ถามีการ Update Row ไหน Row นั้นจะถูก X-Lock แลวไปปลด Lock
ที่จุด Sync Point
- Degree-Two Consistency เมื่อ Open Cursor ก็จะ S-Lock ทั้งกอนเลย ซึ่งเมื่อ Move Cursor ไปขางหนาก็จะมีการปลด
Lock ไปทีละ Row นั่นคือปลด Lock ขางหลังแตไมไดปลด Lock ขางหนา ถามีการ Update Row ไหน Row นั้นจะถูก
X-Lock แลวไปปลด Lock ที่จุด Sync Point
Timestamp-Base Protocol
หลีกเลี่ยง Deadlock โดยใชเวลาเขามาเกี่ยวของ 3 สวนคือ
1) 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 Protocol
รับประกัน Conflict Serializability
1) กรณี Read
a. ถา TS( Ti ) < W-Timestamp(Q) แลว Ti จะ Read(Q) ไมได และตอง Rollback
b. ถา TS( Ti ) ≥ W-Timestamp(Q) แลว Ti จึงจะ Read(Q) ไดสําเร็จและทําการบันทึก TS( Ti ) เปน R-
Timestamp(Q)
2) กรณี Write
a. ถา TS( Ti ) < R-Timestamp(Q) แลว Ti จะ Write(Q) ไมได และตอง Rollback
b. ถา TS( Ti ) < W-Timestamp(Q) แลว Ti จะ Write(Q) ไมได และตอง Rollback
c. นอกนั้นก็ Write(Q) ไดสําเร็จและทําการบันทึก TS( Ti ) เปน W-Timestamp(Q)
พิจารณาปญหา Acc1 [40] Acc2 [50] Acc3 [30]
TA TB
Fetch(Acc1) [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) ปญหาขอ 1 Lost update problem ถาเอา Timestamp protocol มาจับดูจะไดวา Transaction A จะ Rollback
ตามกติกาขอ 1a
2) ปญหาขอ 2 นี้ Timestamp protocol ไมไดดูแลเลย เพราะวาไมมีการเช็คเลยวามีการ commit แลวหรือไม
และเพื่อแกปญหาขอ 2 ก็จะใหมี Commit bit ขึ้นสําหรับแตละ transaction หรืออีกวิธีหนึ่งคือใช X-Lock เขาชวย
กลาวคือถา Update แลวยังไม commit ก็ใหติด X-Lock ไวกอนแลวไปปลด Lock ที่จุด Sync Point
(Q) ถาหาก Timestamp Protocol เอา X-Lock เขามาเพื่อชวยแกปญหาขอ 2 แลว จะมีกรณีเกิด Deadlock ขึ้นหรือไม
(A) จะไมเกิด Deadlock เพราะโอกาศที่ transaction ที่มากอนรอจะไมเกิดขึ้น จะมีก็แต transaction ที่มาทีหลังรอ
38
Advanced Database Systems 1/49-IS20.2
3) ปญหาขอ 3 Transaction A ไมสามารถ Fetch(Acc3) ไดเนื่องจาก Acc3 ถูก Write ดวย Transaction B ซึ่งเด็กกวา
ดังนั้น Transaction A จึง Rollback ตามกติกาขอ 1a
4) ปญหาขอ 4 หาก Transaction B เปลี่ยนจาก Update Acc1 เปน Insert Acc4 และ Transaction A ไมสามารถ
Fetch(Acc4) ไดเนื่องจาก Acc4 ถูก Write โดย Transaction B ซึ่งเด็กกวาดังนั้น Transaction A จะ Rollback
Thomas’ Write Rule
แตปญหาที่เกิดขึ้นคือมีการ Rollback บอยมาก ซึ่งจะตองหาทางวาไมให Rollback พรอมกับผลลัพธก็ไมผิดดวย
T3 T4 T6
Read(Q)
Write(Q)
Write(Q)
Write(Q)
จากตารางขางตนจะเห็นวา T3 ไมสามารถ Write (Q) ไดเนื่องจาก Q ถูก Write โดย T4 ซึ่งเด็กกวาดังนั้น T3 จึง Rollback
แตจากตารางจะเห็นวาทายสุด Q จะถูก Write โดย T6 ดังนัน้ จึงมีผูคิดคนกฏขึ้นวาถาเจอกรณีแบบนี้ ให T3 Ignore Write
Schedule นี้ก็สามารถวิ่งได
Multiversion Timestamp Ordering
ใน Timestamp Protocol Ti ไมสามารถ read r ซึ่งถูก write โดย Tj ซึ่งเด็กกวา ดังนั้น Ti จึง Rollback และ Multiversion ก็จะ
เขามาแกปญหานี้โดยการไมให Ti write ทับแตจะใหตั้งเปน version ใหม ซึ่ง Ti จะ read คา r เกา
Ti r 0
r 1
Tj
แนวคิด
Write Version ใหมเสมอไมทับของเกา เวลา read ก็ read ใหถูก version เปนการแกปญหาขอ 3 และ ขอ 4
สนับสนุน Flash Back Query หมายถึงการถามยอนอดีต
(Q) จากแนวคิดนี้ปญหามีอยูวา Version พวกนี้อยูนานเทาไหร
(A) เมื่อ Write TS ของ version นั้นๆ แกกวา Transaction ที่แกที่สุด
(Q) จากรูปขางบนในทางปฏิบัติ r 0 อาจจะไมไดอยูใน buffer แลวก็ได เมื่อ Ti ตองการใชงานจะหา r 0 มาจากไหน
(A) จาก BIJ เนื่องจาก BIJ จะเก็บ old value ใน oracle จะเก็บ BIJ ไวใน DB Space เรียกวา Rollback Segment เพื่อ
ไปสนับสนุน Multiversion engine กรณีที่ Ti หา r 0 ใน DB Buffer หรือ Rollback Segment ไมพบ Oracle
จะขึ้น message วา “Serializability cannot be achived”
39
Advanced Database Systems 1/49-IS20.2
กรณี Read
Ti จะ Read(Q) ที่มี W-Timestamp เด็กสุดที่มากกวา TS(Ti)
กรณี Write
กรณี Ti จะ Write(Qk+1) แต Tj ซึ่งเด็กวาได Read(Qk) ไปกอนแลวกรณีนี้ Ti จะ Write(Qk+1) ไมได Ti จะตอง
Rollback นอกนั้นจะ Write ได (กติกานี้เอาไวดูแลปญหาขอ 1)
พิจารณาปญหา
1) ปญหาขอ 1 ยังมีการ Rollback
Ti Tj
Read(Qk)
Read(Qk)
Write(Qk+1)
Ti มีไมสามารถ Write(Qk+1) ไดเนื่องจาก Qk ถูก Read โดย Tj ซึ่งเด็กกวากอนดังนั้น Ti จึง Rollback
2) ปญหาขอ 2 มีการใช commit bit
3) ปญหาขอ 3 ผาน และก็ไม wait
4) ปญหาขอ 4 ผาน เพราะวาคน write ก็ Write ไดโดยไมตอง Wait สวนคนเกาก็จะขามไปโดยไมหยิบมาอาน
(Multiversion Timestamp Ordering นี้ไมไดรับประกัน Recoverability และ Cascadeless)
Multiversion 2-phase locking
กรณี Read Only Transaction
Ti จะ Read
รับประกัน Recoverability และ Cascadeless ซึ่งจะดูแลปญหาขอ 1 และขอ 2 ซึ่งเปนวิธีที่ Oracle ใช
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
หมายเหตุ
ถานํา 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 แลวจะได
2) PROJECT แทนดวย π
เลือกเฉพาะ Column ที่ตองการ
s
π S #, STATUS
s
3) Natural Join แทนดวย เปนการ Match value ที่เหมือนกันของ common attribute ซึ่ง common attribute ที่
ที่ปรากฏที่ Output เพียงครั้งเดียว
s x y r x z
x1 y1 x1 z1
x2 y2 x2 z2
x3 y3 x3 z3
s 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))
2. πBALANCE (σBALANCE < 2500 (account))
จากนั้น Optimizer จะดูวาวิธไี หนดีกวา ซึ่งจะดูวาวิธีไหนมี disk block access นอยกวา ก็จะเลือกวิธีนนั้
** ปจจุบัน DBMS จะเลือก select (วิธีที่ 2) กอนเนื่องจากการเก็บ data จะเก็บเปน row จากนั้นจึงคอยนํามาตัดเปน column ใน
memory **
πBALANCE
|
σBALANCE < 2500
|
account
ตัวอยาง
S ( S #, SNAME, CITY ) SP( S # , P #, QTY )
/ \
s p
43
Advanced Database Systems 1/49-IS20.2
2)
πSNAME
|
/ \
πS#,SNAME πS#
| |
σCITY =’London’ σP# =’P2’
| |
s p
Optimizer จะเลือก unary operator กอน ถา optimizer เลือก plan 1 เปนไปไดวาไมไดทํา index ซึ่งจะตองทํา
Full table scan ดังนั้นถาทํา index ไว optimizer จะเลือก plan 2
การทํา Query จะมี 3 ฝายเขามาเกี่ยวของ
1. คน -> เขียนคําสั่ง SQL
2. DBA -> สราง index, เก็บ statistics
3. Optimizer -> เลือกเสนทางที่ดีที่สุด
(Q) ถาตองการ result หนึ่งจะใชวิธี join หรือเรียกใช subquery จึงจะทํางานไดเร็วกวา
Select sname
From S
Where s# in (
Select s#
From SP
Where p# = ‘P2’)
And city = ‘London’
(A) ในการที่จะเลือกใช join หรือ subquery นั้นขึ้นกับปจจัยหลายอยาง เชนยี่หอ DBMS ก็มีสวนเชน oracle จะ join
เร็วกวา
แตถา DB2 เลือกใช subquery ก็จะเร็วกวา
จาก SQL Statement เปนการ join ที่เรียกวา semi-join ซึ่งจะแบงเปน 2 แบบคือ
- semi join positive
- semi join negative
ในปจจุบันมีการทํา Semantic optimization ซึ่งใช 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
(2) b r = จํานวน block ของ relation r
(3) f r = blocking factor ของ relation r (จํานวน tuple ใน 1 block)
(4) V ( A, r ) = จํานวน distinct value ของ attribute A
ของ Relation r (จํานวนที่ไมซ้ํา)
เชน V (CITY , s) Æ มีเมืองกี่เมืองอยูในตาราง s
(5) SC ( A, r ) Æ Selection cardinality คือจํานวน tuple ที่มีคา attribute value ของ A
ตามที่กําหนดให (No of row retrieved)
Selection Operation
เปน Algebra operator ซึ่งจะ implement ไดหลายวิธี
A1. Linear search
ใชในกรณีที่ไมมี Index และ data sort ตาม physical เรียบรอยแลว หรือมีการทํา clustering เรียบรอยแลว
การทํา Clustering หมายถึงการนํา row ที่ใชดวยกันบอยๆ (Logical adjacent rows) มาเก็บไวดวยกัน (ใน
block เดียวกันหรือ Block ใกลเคียงกัน) และมีการ Sort data ในระดับ physically ทําไดดวยคําสั่ง
Alter table cluster …
⎡ ⎤
Cost ของการทํา binary search = ⎡log 2 (b r )⎤ + ⎢ nr
⎥ −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 r = 20
จาก
⎡ nr ⎤
br = ⎢ ⎥
⎢ f r⎥
จะไดวา
1000
br = = 50
20
⎡ ⎤
Cost = ⎡log 2 (b r ) ⎤ + ⎢
nr
จาก ⎥ −1
⎢V ( A, r ). f r ⎥
จะไดวา
⎡ 1000 ⎤
Cost = ⎡log 2 (50) ⎤ + ⎢ −1
⎢100 × 20 ⎥⎥
= ⎡⎢ log 50 ⎤⎥ + ⎡0.5⎤ − 1
⎢ log 2 ⎥
= ⎡1.699 ⎤
⎢⎢ 0.301⎥⎥ + 1 − 1
= ⎡5.645⎤
= 6 block accesses
จาก Search Condition
(Q) Index กับ key ตางกันอยางไร
(A) Index ไมใชสวนหนึ่งของ relation แตเปนกลไกในการเขาถึงขอมูลใหเร็วขึ้น ซึ่งอาจจะมีซ้ํา
Key เปน Identifier ซึ่งจะเนน Uniqueness และเปนสวนหนึ่งของ relation
(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
ซึ่ง
SC ( A, r )
br =
fr
จะใชกรณีที่ Search key เปน Secondary Index และทําการ search บน column ที่เปน candidate key
Cost = HTi + 1
จะใชกรณีที่ Search key เปน Secondary Index และทําการ search บน column ที่เปน non-key
Cost = HTi + SC ( A, r ) assume วา 1 row มี 1 block
ตัวอยาง
I1(PI) I2(SI)
Select * From s
Where CITY=’PARIS’ Æ 200 rows
And STATUS = 30 Æ 20 rows
กําหนดให Blocking Factor = 25 จะไดวา
CITY เปน Primary Index
SC ( A, r ) 200
br = = =8
fr 25
STATUS เปน Secondary Index
b r = SC ( A, r ) = 20
ดังนั้น Search CITY จะใช 8 blocks แต Search STATUS ใช 20 blocks ดังนั้นเลือก CITY ดีกวา
จะไดวา Cost CITY = 'PARIS ' = HTi + 8
Cost STATUS =30 = HTi + 20
47
Advanced Database Systems 1/49-IS20.2
Join Operation
1. Nested-Loop Join
S SP
SP S
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
Search key เปน attribute หรือ set of attribute ที่ใชในการ lookup record ใน files
(Q) Search key กับ Candidate key แตกตางกันตรงไหน
(A) Search key กลาวถึง Search Condition สวน Candidate Key กลาวถึง Unique Identifier
Dense Index เปน index ที่มี search key ครบทุก key value
Sparse Index เปน index ที่มี search key ไมครบทุก key value
Sparse index นั้นจะไดเปรียบขอเดียวตรงที่ประหยัด space โดยที่ sparse index จะชี้ไปที่ตน block แลวหยิบ
มาทั้ง block จากนั้นจะเขาไปหาใน block วา row ที่ตองการอยูที่ไหน
(Q) Dense index เร็วกวา sparse index ตรงไหน
(A) Dense Index มีครบทุก search key และ sort จึงสามารถใช binary search ในการคนหา index ได
Sparse Index มีไมครบทุก search key ดังนั้นการคนหา index จะตองใช linear search
แบง Search space ออกเปนชวงๆ จะไดไมตอง search ทั้งหมด มีลักษณะเปน tree และ B±Tree คือ Balance Tree
49
Advanced Database Systems 1/49-IS20.2
(Q) ตารางนี้มีกี่ row
(A) สามารถนับที่ Dense Index Entry ไดเลย
HT คือความสูงของ tree
⎡ ⎤
HT <= ⎢ log n ( K ) ⎥
⎢ 2 ⎥ K = Search Key Value
B-Tree
B±Tree
(Q) B-Tree ตางกับ 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
Bucke t0
Bucke t1
Bucke t3
51
Advanced Database Systems 1/49-IS20.2
Hash Index
52
Advanced Database Systems 1/49-IS20.2
Temporal Database
มีคําถามวาใน 10 ปที่ผานมามีใครเคยอยูบานเดียวกับคุณบาง ถาเปนฐานขอมูลธรรมดาจะไมสามารถตอบไดเลย
คําถามนี้เปนการเช็คชวงเวลา เพื่อตอบคําถามเหลานี้จึงมี Research เกิดขึ้นมากมายและนําไปสู Temporal Database
ตัวอยาง
ในสหรัฐมีเด็กแฝด 7 คนซึ่งจะมีการเก็บสถานะของสุขภาพของเด็กแตละคนในแตละชวงเวลาดังตาราง
ตารางนี้เปนชวงเวลาที่กําหนดเปน 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 ตั้งแตเมื่อไหรถงึ เมือ่ ไหร ใชกับตารางที่มีการเปลี่ยนสถานะไปเรื่อยๆ เชน
เงินเดือน, ชื่อ เปนตน
(Q) จากตารางขางตนเปนไปไดหรือไมวาเก็บเฉพาะ From Date แตไมเก็บ To Date
(A) ทําได แตการเช็คชวง Overlap จะทําไดยากและอาจจะมีปญหาเรื่อง Fact ไมตอเนื่องเชนการเปนสมาชิกชมรมกีฬาตางๆ
ตัวอยาง
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
ซึ่งถาเวลาเปลี่ยนไปก็อาจจะมีการเปลี่ยนแปลงได
Sequenced Duplicate – duplicate ในชวงเวลาใดๆ ก็ได ตัวอยางเชน
หรืออีกตัวอยางคือเคยอยูบานเดียวกันบางแตอาจจะไมจําเปนตองอยูในเวลาเดียวกันก็ได
54
Advanced Database Systems 1/49-IS20.2
สรุปเปนตารางไดดังนี้
ซึ่งรูปนี้อาจารยบอกวาอาจจะไมถูก
นิยามของ Temporal Database
นิยามที่ 1
Database ที่เก็บขอมูลที่มีการเปลี่ยนแปลงตามเวลา (Time-varying) (นิยามนี้ยังไมถือวาเปนทางการ)
เนื่องจากสิ่งของบางอยางไมมกี ารเปลี่ยนแปลงแตความสามารถในการวัดเปลี่ยนแปลงไปเชนความสูงของยอดเขาเมื่อ 80 ป
ที่แลวกับปจจุบันไมเทากัน, ความสวางของดวงดาว ซึ่งวัดเมือ่ 80 ปกอนกับปจจุบันไมเทากัน
นิยามที่ 2 (เปนทางการ)
Database ที่สนับสนุน แงมุมบางแงมุมของเวลา แตไมนับ user-defined time โดย user-defined time คือ
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 query ซึ่งเปน query ที่ไมสนใจเรื่องของเวลา ซึ่งจะไดวา
ผลลัพธคือ
ผลลัพธคือ เปนตัวระบุวาเปนเวลาปจจุบัน
ผลลัพธคือ
56
Advanced Database Systems 1/49-IS20.2
Temporal Join
(Q) ฝูงไหนอยูใ นคอกเดียวกันบาง
(A) ทําไดโดยการ Join ตารางเดียวกันเขาดวยกัน ซึ่งจะไดวา
ผลลัพธคือ
57
Advanced Database Systems 1/49-IS20.2
2) L2 มาอยูกอ น จากนั้น L1 ตามมา แลว L2 ออกตามดวย L1
กรณีที่ 1
กรณีที่ 2
กรณีที่ 3
กรณีที่ 4
ผลลัพธคือ
58
Advanced Database Systems 1/49-IS20.2
Modifying Valid-Time State Table
ความยากของเรื่องไมไดมีแค Select เทานั้นแตยากที่ modify ดวย
ตัวอยาง
ตัวอยางนี้เปนการตอนวัว ดัง Diagram ขางลางนี้
ลูกวัวตัวผู วัวตัวผู
วัวตัวผูที่ตอนแลว
ลูกวัวตัวเมีย วัวตัวเมีย
วัวตัวเมียที่ตอนแลว
Delete
ถามีการ Delete Lot 101 ในปจจุบัน เราไมสามารถที่จะใชวา
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 ทิ้ง
ดังนั้นจะไดวา
60
Advanced Database Systems 1/49-IS20.2
Current Update
จะตองเช็คในครบทั้ง 3 กรณีคือ
Sequence Insert
ถาจะ Insert Sequence ตองบอกดวยวา valid ตั้งแตเมื่อไหรถึงเมือ่ ไหร
ตัวอยาง
Sequence Delete
ถาจะ Delete จะตองบอกดวยวาจะ delete เมื่อไหรถงึ เมื่อไหร ซึ่งจะมีการ Update ชวงเวลาใหม
ซึ่งจะมี 4 กรณีดังนี้
Update to_date
61
Advanced Database Systems 1/49-IS20.2
Update from_date
Delete PV
โดย
PV = Period of Validity (ชวงเวลาที่ Fact เดิมเปนจริงอยู)
PA = Period of Application (ชวงเวลาที่จะ Delete)
ตัวอยาง
กรณีที่ 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
63
Advanced Database Systems 1/49-IS20.2
Temporal SQL (Back in the Pens)
Select
(Q) ปจจุบันมีฝูง 219 กี่ตัว
(A) เปน current query
(Q) ปจจุบันฝูงไหนอยูคอกเดียวกันบางในปจจุบัน
(A)
(Q) ฝูงไหนเคยอยูคอกเดียวกันดวยกันบาง
(A) เปน sequenced query
64
Advanced Database Systems 1/49-IS20.2
Modify
(Q) Insert ฝูง 234 ตั้งแต 1998-03-26 ถึง 1998-04-14
(A) เปน Sequenced insert
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