YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Database Lecture 2

สรปคาบรรยาย

วชา

Advanced Database Systems

บรรยายโดย

รศ.ดร. ศภมตร จตตะยโศธร

ภาคเรยนท 1/2549 คณะเทคโนโลยสารสนเทศ

สถาบนเทคโนโลยพระจอมเกลาเจาคณทหารลาดกระบง

Page 2: Database Lecture 2

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

Page 3: Database Lecture 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

Page 4: Database Lecture 2

Advanced Database Systems 1/49-IS20.2

Temporal Database ........................................................................................53

Valid-Time State Table.........................................................................................................................................53

Duplication Concept .............................................................................................................................................54

นยามของ Temporal Database ................................................................................................................................55

Temporal Join .......................................................................................................................................................57

Modifying Valid-Time State Table.......................................................................................................................59

Current Delete.......................................................................................................................................................60

Current Update......................................................................................................................................................61

Sequence Insert .....................................................................................................................................................61

Sequence Delete....................................................................................................................................................61

Sequence Update ..................................................................................................................................................63

Temporal SQL (Back in the Pens) ........................................................................................................................64

Transaction-Time State Table...............................................................................................................................65

Bitemporal Table ..................................................................................................................................................66

4

Page 5: Database Lecture 2

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 Insert รถคนใหม

Assign พนกงานรบผดชอบรถ End transaction

Synchronization Point (จดเรมตน/จดสดทายของ Transaction) R1 ถกละเมด

Database สอดคลองตาม R1

R2: การโอนเงนจะตองไมมยอดเงนหายไปจากระบบ เหตการณ โอนเงนจาก A ไปยง B จานวน x บาท สงทตองทาคอ Begin Transaction

R2 ถกละเมด ถอน A จานวน x บาท ฝาก B จานวน x บาท

Database สอดคลองตาม R2 End Transaction

5

Page 6: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 1 Transaction ม 1 คาสงหรอมากกวากได เหตการณ Update หมเลอดของคนในประเทศจาก A เปน Z Begin Transaction Update A Z End Transaction

(Q) กรณทมการ Update ขอมลทเปน Volume transaction กระทบ 1 ลาน rows

ในระหวางปฏบตงานจะมทง A และ Z อยใน Database Database สอดคลองกน

กรณทวงไปได 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

Page 7: Database Lecture 2

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 Begin TX ฝาก B Commit TX

*** Consistency นเปนหนาทของโ

ถอวาไม Consistency

ปรแกรมเมอร 60 % และ DBMS 40 % ***

7

Page 8: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 3. Isolation : TX ทวงรวมกนในชวงเวลาเดยวกนจะตองไมรบกวนกน

ตวอยาง ถาม Ti และ Tj วงรวมกน |------------- Ti-------------| |------------- Tj -------------| สงทเกดขนจะเปนไปได 2 กรณคอ

Concurrent schedule

Serial schedule 1) |------------- Ti -------------|------------- Tj -------------| 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

Page 9: Database Lecture 2

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

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 จะตองมมนษยเขามาเกยวของดวย

ทง Partially committed และ Active สามารถทจะ Failed ได

Partially Committed Committed

มการเปลยนจาก Partially committed ไปเปน committed เรวเทาไหรกจะยงด

Active

Aborted Failed

9

Page 10: Database Lecture 2

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

ซง 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 จะทาเมอไหร (A) เมอ DBMS และ OS เหนสมควรคอเมอไมมใครใช buffer นนแลว (Release recently used) หรอ buffer เตม ซงจะทากอนหรอหลง commit กได

10

Page 11: Database Lecture 2

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 <Ti commit> Transaction มการ commit (ตรงนมรป) (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

Page 12: Database Lecture 2

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)

<Tx start> <Tx Q, NV> <Tx commit>

<Tx start> <Tx Q, OV> <Tx commit>

AIJ BIJ เหตผลทตองแยกกเพอทจะประหยด Space เพราะวา content ของ BIJ เมอ commit เรยบรอยแลวกสามารถทจะ recycle ได ** มคากลาววาการม Logfile เหลานชวยให recover ไดกจรง แตจะทาให performance มปญหาเนองจากจะทาให I/O เพมขน ซงเปนคากลาวทผด ** ซงปญหาท Commit ชา มกจะเกดจากการไมม logfile เนองจากการ output ไปยง DB Space ทาไดยากกวา output ไปยง logfile

12

Page 13: Database Lecture 2

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

Page 14: Database Lecture 2

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 Insert into t1 value (…)

Display date/time 30,000 รอบ

ไมม AIJ ใชเวลา 19 ชวโมง แตถาม AIJ ใชเวลาแค 8 นาท End TX Display date/time

8 นาทกนบวาชามากเปนเพราะเวลาดงกลาวเปน Test system แตถาเปน production มงานทวงอยมากมายทาให DB Buffer เตมเรว จงมการ output ไปยง DB Space ไดเรวขน (2) AIJ Only (ไมม BIJ)

การ 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

DB Buffer

AIJ

DB Space

14

Page 15: Database Lecture 2

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

Page 16: Database Lecture 2

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 T2

T3

T4

T5 Undo

Undo

Redo

Redo T1

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

Page 17: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 ถาตวท 1 เตมและมาใชตวท 2 มการ Fail เกดขน ในการ redo ทาถงจอ Check point ลาสดคอจะอางถง content ของ logfile ปจจบนเทานน ไมจาเปนตองไปอางถง Content ของ logfile กอนหนา

จด Default Check point จด Fail

17

Page 18: Database Lecture 2

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

การสราง 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

Stored

OS Disk Manager

Database Block

OS File Manager By pass File Manager OS Block

Bit & Byte

18

Page 19: Database Lecture 2

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 File

ตวอยางกรณทตองการอาน 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 1. DBMS จองเนอทใน memory สาหรบทาเปน DB Space และดแลเอง

การทา Database Buffer ทาตาม Protocol ทคยกนไวทงหมดเพยงแต DBMS เปนคนจดการ

Log buffer

DB Space

(1)

B1 (2)

(3) B2

DB Buffer Fixed DBMS จดการ Size Virtual memory ของ OS

19

Page 20: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 User

DBMS

เปนการยก 1 Device ใหเปน 1 DB Space 2. DBMS ใชเนอทของ Virtual memory สาหรบทาเปน DB Space ซงอยภายใตการจดการของ OS

DB Space จะเปน File ซง OS ดแล

แบบท 1

1. เรวขนในกรณท DBMS และ File Manager ทางานไมสมพนธกน 2. ขนาดของ Buffer fix ทาใหใชประโยชนไมเตมท หาก Buffer เหลอกไมสามารถเอาไปใชกบงานอนได

และหาก Buffer ไมพอกไมสามารถขยายขนาดได เนองจาก Fix ขนาดอย (ขนาดของ Buffer สามารถกาหนด เปน Parameter ในการทา performance tuning)

DBMS

DB Space Disk Manager

DB Buffer User

Virtual memory ของ OS DBMS

File Manager

Disk Manager

DBMS DB Buffer

20

Page 21: Database Lecture 2

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 จะเหมอนกบโทรทศน คอเปดปบตดปบ ไมตองรอ แตจะใชกบระบบเลกๆ Page Table Page on disk กลาวคอจะมการจด Page บน disk แลวกม page table ทชไปยงทตางๆ บน page นน ซงเปน page table ท DBMS จด Shadow Page Table Current Page Table Page on disk หลกของ Shadow paging

1. เมอม begin transaction กจะสราง current page table ขนมาอกตวหนง แลว page table เกากลายเปน shadow page 2. เมอตองการแกไขกจะกอบ page ทตองการแกไขมาเปน page ใหมซง current page table จะชไปยง page ใหมและจะ

แกไขท Page ใหม แต shadow page จะชไปท page เกาเสมอ 3. ถาเกด Failure ขนกจะทง current page ไปใช shadow page แทน เราเรยกวา Instance Rollback 4. แตถา commit กจะเปนการ save current page อยางถาวรและโยน Shadow Page ทงไป

21

Page 22: Database Lecture 2

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)

SAT Vol. backup Volume Backup SAT Vol.

SUN log achieve SUN log

ตวอยาง กรณ Disk crash วนพธ 11:00

วธการตามรปนเรยกวา Rollforward Activity เราสามารถทา Rollforward ลวงหนาไดโดยการทา Cumulative Backup

MON log

THU log

MON log achieve

FRI log

THU log achieve FRI log achieve

Incremental Backup

SAT Vol.

SUN log

MON log

TUE log

2nd Volume Backup 2nd Vol. Back Merge

Mon morning

Merge

Tue morning

Merge Wed morning

Merge WED log Wed 11:00

22

Page 23: Database Lecture 2

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

Parameter เหลานจะไปอยใน DB Space Definition

23

Page 24: Database Lecture 2

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 -------------| ตวอยาง Schedule 1 การโอนเงนซงเปน Serial Schedule ท T1 นา T2 ตาม

Serialize Schedule

หมายเหต Schedule เปนการจดลาดบการปฏบตงานของคาสงใน Transaction

T1 T2

Read(A) A := A – 50 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

Page 25: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 Schedule 2 การโอนเงนซงเปน Serial Schedule ท T2 นา T1 ตาม

T1 T2

Read(A) A := A – 50 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)

Schedule 3 การโอนเงนซงเปน Concurrent Schedule ซงผลลพธเหมอนกน Schedule 1

T1 T2

Read(A) A := A – 50 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)

การทจะดวาผลลพธสดทายเหมอนหรอไมเหมอน DBMS ดไดยากและ overhead สง

25

Page 26: Database Lecture 2

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 T4Read(Q) Write(Q)

Write(Q)

ผลลพธสดทายไมเหมอน Serial Schedule และ conflict

(Q) จากรป 15.11 ถามวาถกตองหรอไม T1 T5

Read(A) A := A – 50 Write(A) Read(B) B := B + 50 Write(B)

Read(B) B := B – 10 Write(B) Read(A) A := A + 10 Write(A)

(A) ถกตอง

26

Page 27: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 (Q) Conflict Serializable หรอไม (A) ไม เนองจากมการ read กบ write บน B ดวยกน จงสลบกนไมได ดงนนจงไม Conflict Serializable (Q) จากรป 15.12 ถามวาถกตองหรอไม

T3 T4 T6Read(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

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

15.7 15.12 ถกตองแตไม Conflict Serializable Schedule

ถกตองเปน View Serializable แตไม Conflict Serializable Schedule 15.8

ถกตองและ Conflict Serializable Schedule

27

Page 28: Database Lecture 2

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

Read(A) Write(A) Read(B) Write(B)

Read(A) Write(A) Read(B) Write(B)

T1 T2

Read(A) Write(A) Read(B) Write(B)

Read(A) Write(A) Read(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

Page 29: Database Lecture 2

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(B) : Fail

Read(A)

จากตารางจะเหนวา 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

Page 30: Database Lecture 2

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 ------|

(Q) ผลลพธของ T1 ควรจะเหน T2 หรอไม (A) ไมควรเหน เนองจากจะตองจะตองทางานเสมอนกบวา T1 นา T2 ตาม 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 หรอไม

30

Page 31: Database Lecture 2

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) : Update(R)

Fetch(R) Update(R)

จากตาราง การ Update(R) ของ TA ไดหายไป 2. The uncommitted dependency problems

TA TB : Fetch(R) :

Update(R) : Rollback(R)

จากตารางไดวา TA ไดอานคา R ซงถก Update โดย TB และยงไม commit ถาหาก TB Rollback ภายหลงกจะไดวา TA

ไดนาคาทผดๆ ไปใช

31

Page 32: Database Lecture 2

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) [20] Sum = 110 not 120

Fetch(Acc3) [30] Update Acc3 [30] [20] Fetch(Acc1) [40] Update Acc1 [40] [50] Commit

เปนการวเคราะหขอมลทผดๆ ซงถานา 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

Page 33: Database Lecture 2

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) Read(B) B := B – 50 Write(B) Unlock(B) Lock-X(A) Read(A) A :+ A + 50 Write(A) Unlock(A)

Lock-S(A) Read(A) Unlock(A) Lock-S(B) Read(B) Unlock(B) Display(A+B)

Grant-X(B, T1) Grant-S(A, T2) Grant-S(B, T2) Grant-X(A, T2)

Grant หมายถงใหสทธ จะไดวาคาตอบไมถกเนองจากวา T1 ได Modify คา B ไปแลว T2 แลวมา Read คา A ซงเปน A เกา แตพอ T2 Read คา B เปน B ใหม สรปวาใน Schedule น T2 Read คา A เกา และ B ใหม ซงเปน Inconsistence Analysis ในรปแบบหนง ถาจะใหถกแลวผลลพธจะตองเสมอนวา T1 นา T2 ตาม

33

Page 34: Database Lecture 2

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

พจารณาปญหา 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 ขอ

Lock B Lock C : Unlock B Unlock A Unlock C

รบประกน Conflict Phase I Serializable ซงจะแกปญหาขอ 1 และขอ 3 แตขอ 2 ยงมโอกาสเกดขนได Phase II

34

Page 35: Database Lecture 2

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

จากรปเมอตองการ Select sum ตาราง bF DBMS กจะปฏบตตามขนตอนตอไปน

1. ทาการ intention share DB space เพอใหรวามการ share จรงอยขางใต 2. จากนนกทาการ intention share 1A

35

Page 36: Database Lecture 2

Advanced Database Systems 1/49-IS20.2

3. share bF

4. ถามคนตองการจะ Exclusive กจะเรม IX ณ จด DB ซงจะพบวา DB ถก IS อยกอนแลว 1br

จาก Compatibility Matrix จะไดวา IS กบ IX จะเปน True 5. ลงมาทาการ IX ณ จด จะพบวา ถก IS ซงจะไดเปน True 1A 1A

6. ลงมา IX ณ จด ซงจะพบวา ถก S และเมอ IX เจอกบ S กจะไดเปน False ซงจะตอง Wait bF bF

ตวอยาง SIX

ยงงงอย

36

Page 37: Database Lecture 2

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

Page 38: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 Timestamp-Ordering Protocol รบประกน Conflict Serializability

1) กรณ Read a. ถา TS( ) < W-Timestamp(Q) แลว จะ Read(Q) ไมได และตอง Rollback iT iT

b. ถา TS( ) ≥ W-Timestamp(Q) แลว จงจะ Read(Q) ไดสาเรจและทาการบนทก TS( ) เปน R-Timestamp(Q)

iT iT iT

2) กรณ Write a. ถา TS( ) < R-Timestamp(Q) แลว จะ Write(Q) ไมได และตอง Rollback iT iT

b. ถา TS( ) < W-Timestamp(Q) แลว จะ Write(Q) ไมได และตอง Rollback iT iT

c. นอกนนก Write(Q) ไดสาเรจและทาการบนทก TS( ) เปน W-Timestamp(Q) iT

พจารณาปญหา Acc1 [40] Acc2 [50] Acc3 [30] TA TB

Fetch(Acc1) [40] Sum = 40 Fetch(Acc2) [50] Sum = 90 Fetch(Acc3) [20] Sum = 110 not 120

Fetch(Acc3) [30] Update Acc3 [30] [20] Fetch(Acc1) [40] Update Acc1 [40] [50] Commit

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

Page 39: Database Lecture 2

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 T6Read(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 r0

r1 Tj

แนวคด Write Version ใหมเสมอไมทบของเกา เวลา read ก read ใหถก version เปนการแกปญหาขอ 3 และ ขอ 4 สนบสนน Flash Back Query หมายถงการถามยอนอดต (Q) จากแนวคดนปญหามอยวา Version พวกนอยนานเทาไหร (A) เมอ Write TS ของ version นนๆ แกกวา Transaction ทแกทสด (Q) จากรปขางบนในทางปฏบต อาจจะไมไดอยใน buffer แลวกได เมอ Tr0 i ตองการใชงานจะหา มาจากไหน r0

(A) จาก BIJ เนองจาก BIJ จะเกบ old value ใน oracle จะเกบ BIJ ไวใน DB Space เรยกวา Rollback Segment เพอไปสนบสนน Multiversion engine กรณท Ti หา ใน DB Buffer หรอ Rollback Segment ไมพบ Oracle จะขน message วา “Serializability cannot be achived”

r0

39

Page 40: Database Lecture 2

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 TjRead(Qk) Write(Qk+1)

Read(Qk)

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

Page 41: Database Lecture 2

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 ใดๆ Parser and translator = ตรวจไวยากรณและแปลเปน relational algebra Database statistics = เกบขอมลตางๆ ทจาเปนในการทา cast-based opt. Optimizer = คนหาเสนทางทดทสดโดยใช database statistics ซงถาไมมสถตเหลาน Optimizer จะทา rule-based optimization

หมายเหต ถานา 2 table มา join กน table1 เกบสถต table2 ไมเกบสถต การทางานจะเกบสถตสดๆ ของ table2 ณ ตอน query เลย ทาให Query ชามากกวาไมไดเกบสถตทง 2 tables

41

Page 42: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 ตวอยาง SQL statement SELECT balance FROM account WHERE balance < 2500 แปลงเปน Relational algebra แลวจะได

σ 2500<balance Relational algebra เปน Procedural language ม 8 operator หลกๆ โดยสวนของ Data ใหเขยนตวเลก สวนของ schema ใหเขยนตวใหญ

1) SELECT หรอ Restrict แทนดวย σ เลอกเฉพาะ Tuple ทสอดคลองตามเงอนไข

sLondonQTYσ ''= s

2) PROJECT แทนดวย π เลอกเฉพาะ Column ทตองการ

sSTATUSSπ ,# s

3) Natural Join แทนดวย เปนการ Match value ทเหมอนกนของ common attribute ซง common attribute ท ทปรากฏท Output เพยงครงเดยว

s x y x1 y1 x2 y2 x3 y3

r x z x1 z1 x2 z2 x3 z3

s r x y z

x1 y1 z1 x2 y2 z2 x3 y3 z3

42

Page 43: Database Lecture 2

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

ตวอยาง ),,#( CITYSNAMESS ),#,#( QTYPSSP 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 sp))) πSNAME

| σP# =’P2’ |

σCITY =’London’

| / \

s p

43

Page 44: Database Lecture 2

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

Page 45: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 ตวอยาง ฐานขอมลม Business rule คอยมหนงสอไดไมเกน 5 เลม ถาตองการ query จานวนนกศกษาทยมหนงสอ 8 เลม DBMS ตรวจสอบพบวาขดกบ business rule กจะ return result เปน not found กลบมาโดยไมจาเปนตองอาน disk เลย

ตวอยาง Database statistics (1) nr = จานวน tuple ของ relation r (2) br = จานวน block ของ relation r (3) f r

= blocking factor ของ relation r (จานวน tuple ใน 1 block) (4) = จานวน distinct value ของ attribute A ),( rAV

ของ Relation r (จานวนทไมซา) เชน มเมองกเมองอยในตาราง s ),( sCITYV

(5) Selection cardinality คอจานวน tuple ทมคา attribute value ของ A ),( rASC

ตามทกาหนดให (No of row retrieved) Selection Operation

เปน Algebra operator ซงจะ implement ไดหลายวธ A1. Linear search

ใชในกรณทไมม Index เปนการทา Full Table Scan Cost ของการทา Linear Search = br กรณเปน Key attribute จะใช

2brCost =

A2. Binary search

ใชในกรณทไมม Index และ data sort ตาม physical เรยบรอยแลว หรอมการทา clustering เรยบรอยแลว การทา Clustering หมายถงการนา row ทใชดวยกนบอยๆ (Logical adjacent rows) มาเกบไวดวยกน (ใน block เดยวกนหรอ Block ใกลเคยงกน) และมการ Sort data ในระดบ physically ทาไดดวยคาสง

Alter table cluster …

Cost ของการทา binary search = ⎡ ⎤ 1).,(

)(log2 −⎥⎥⎥

⎢⎢⎢

⎡+

f rrAVnrbr

45

Page 46: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 ตวอยาง ตารางม 1000 rows =nr 1000 มเมองทงหมด 100 เมอง 100),( =rAV Blocking factor คอ 20 = 20 f r

จาก

⎥⎥⎥

⎢⎢⎢

⎡=

f r

nrbr

จะไดวา 50

201000

==br

จาก ⎡ ⎤ 1).,(

)(log2 −⎥⎥⎥

⎢⎢⎢

⎡+=

f rrAVnrbrCost

จะไดวา

⎡ ⎤ 120100

1000)50(log2 −⎥⎥⎤

⎢⎢⎡

×+=Cost

= ⎡ ⎤ 15.02log

50log−+⎥

⎤⎢⎢

= 11301.0699.1

−+⎥⎥⎤

⎢⎢⎡

= ⎡ ⎤645.5 = 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 1+= HTiCost

โดยท HTi เปนความสงของ index

46

Page 47: Database Lecture 2

Advanced Database Systems 1/49-IS20.2

A4. Primary index, equality on non-key

จะใชกรณท Search key เปน Primary Index และทาการ search บน column ทเปน non-key brHTiCost +=

ซง

f r

rASCbr

),(=

A5.1 Secondary index, equality on key

จะใชกรณท Search key เปน Secondary Index และทาการ search บน column ทเปน candidate key 1+= HTiCost

A5.2 Secondary index, equality on non-key

จะใชกรณท Search key เปน Secondary Index และทาการ search บน column ทเปน non-key ),( rASCHTiCost += assume วา 1 row ม 1 block

ตวอยาง

Select * From s Where CITY=’PARIS’ 200 rows And STATUS = 30 20 rows

กาหนดให Blocking Factor = 25 จะไดวา CITY เปน Primary Index

825

200),(===

f r

rASCbr

STATUS เปน Secondary Index 20),( == rASCbr

ดงนน Search CITY จะใช 8 blocks แต Search STATUS ใช 20 blocks ดงนนเลอก CITY ดกวา จะไดวา 8'' +== HTiCost PARISCITY

2030 +==

HTiCostSTATUS

I1(PI) I2(SI)

47

Page 48: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 Join Operation

1. Nested-Loop Join

ใชสญลกษณ θ θ = Join Condition ซงไมจาเปนตองเปน เทากบ ตวอยาง กาหนดให S SP S ม 200 rows 10 blocks SP ม 200,000 rows 10,000 blocks Blocking factor = 20 กาหนดใหทงสองตารางไมม Index กรณท 1 S เปน Loop นอก SP เปน Loop ใน

S 1 rows ใช SP 10,000 blocks S 200 rows ใช SP 2,000,000 blocks จาก จานวน Block = )( bspbsbs ×+ ดงนนใช S = 2,000,000 + 10 = 2,000,010 blocks กรณท 2 SP เปน Loop นอก S เปน Loop ใน

SP 1 rows ใช S 10 blocks SP 2,000,000 rows ใช S 10 blocks

(เนองจากวา S 10 block นอยมาก สามารถเกบใน Buffer ไดตลอดไมวา SP เปลยนไปกยงใช S 10 block เดมได) จาก จานวน Block = bspbs + ดงนนใช SP = 10,000+10 = 10,010 blocks สรปไดวาเอาตารางทมขนาดใหญไวขางนอกดกวา

S SP

SP S

48

Page 49: Database Lecture 2

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 bs block br Block ของ r ใช s b bs× r block ดงนน จานวน Disk block = ( )b b br s r+ ×

สรปวาถาเอาตารางเลกไวขางนอกถงจะด 3. Indexed Nested-Loop Join

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

n มากจงจะดเพราะวา tree ตนเตย ในทางปฏบต n จะขนกบขนาดของ search key ถา search key เลก n จะมาก

49

Page 50: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 (Q) ตารางนมก row (A) สามารถนบท Dense Index Entry ไดเลย HT คอความสงของ tree

( )log2

HT n⎡ ⎤<= ⎢⎢

K ⎥⎥ 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

Page 51: Database Lecture 2

Advanced Database Systems 1/49-IS20.2

4. Hash Join Static Hashing

Hashing เปนการเขาถง Data โดยไมตองใช index แตใชการคานวณ โดยใช Hash Function

Search Hash Function

H(search key) => dataset address

David

จะใชในกรณทม Data ไมมากแต database จะเลยง collisionHash Function ทเหมาะสมกบ 10,000 rows อาจใชไมไดกบ 100

ของ search key วธท Database ทจะแกปญหาการเกด collision 1 bucket จะมหลาย database block จะตองขยายขนาดเปน Bucket จะได Hash Cluster ถา bucket เต

Bucket 0

Bucket 1

Overflow BucBucket 2

Bucket 3

Dataset

Peter

John

David Somchai

ไมได เราตองเลอก Hash Function ใหเหมาะสม ,000 rows นอกจากนนกเปนเรองของขนาดและ data type

มจะเกด Overflow Bucket

ket for Bucket 1

51

Page 52: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 Hash Index

จากรปมการสราง Bucket เปนดานหนาแลวชไปยง Data ตรง ขอด มไดลาย Hash Index ตอ 1 Dataset Bucket เปลาๆจะถกสรางขนมาตอนสราง index จานวน bucket นนจะขนอยกบ Hash function ทใช และเมอเกด overflow ขนกจะมการ chain bucket ขนมา ซงปกตแลว Hash Index จะม HTi = 1 เสมอ (Q) กรณท Hash Index Overflow เยอะเราจะทาอยางไร (A) Drop index เดมทง Create index ใหมโดยใช Hash Function ทเหมาะสม ซงไมมผลใดๆกบ application

52

Page 53: Database Lecture 2

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 ตงแตเมอไหรถงเมอไหร ใชกบตารางทมการเปลยนสถานะไปเรอยๆ เชน เงนเดอน, ชอ เปนตน (Q) จากตารางขางตนเปนไปไดหรอไมวาเกบเฉพาะ From Date แตไมเกบ To Date (A) ทาได แตการเชคชวง Overlap จะทาไดยากและอาจจะมปญหาเรอง Fact ไมตอเนองเชนการเปนสมาชกชมรมกฬาตางๆ ตวอยาง ),,,,#( SALARYDEPTADDRENAMEEEMPตารางนเดมเปน 5NF แตหลงจากทเพม fromdate และ todate เขาไปแลวจะไดวาถามการเปลยน Address ทาใหเกด Row ใหมซงม Key value เดมทาใหเกดขอมลซาซอนเปนจานวนมาก ดงนน Primary Key กจะซา ซงถาจะใหไมซากตองเอามา combine กบ valid time

53

Page 54: Database Lecture 2

Advanced Database Systems 1/49-IS20.2

E# ENAME ADDR DEPT SALARY

จากรปไมสามารถ Implement ใน relational database ไดเนองจากม repeating group (แต implement ดวย object relational database ได) ซงจะตองทาการแยกตารางโดยแยกเฉพาะ attribute ทเปน temporal attribute ออกมาเปนตารางใหม ตอมาไดมการออก 6NF สาหรบ Temporal Database ขนโดยมนยามคอ นยาม 6NF คอ ตารางทไมสามารถ Split ไดอกตอไปแลว ซงเอาไวใชกบ temporal database โดยเฉพาะ Duplication Concept Nonsequenced duplicate – เปนกรณ duplicate ปกตซงมอง fromdate และ todate เปน attribute ธรรมดาเชน

Value Equivalent duplicate– duplicate เฉพาะ value โดยไมสนใจเวลาเชน

Current Duplicate – duplicate เฉพาะ value ณ เวลาน ตวอยางเชน

ถาวนนเปนวนท 1998-01-06 จะไดวา Current duplicate คอ

ซงถาเวลาเปลยนไปกอาจจะมการเปลยนแปลงได

Sequenced Duplicate – duplicate ในชวงเวลาใดๆ กได ตวอยางเชน

หรออกตวอยางคอเคยอยบานเดยวกนบางแตอาจจะไมจาเปนตองอยในเวลาเดยวกนกได

From date Temporal Attribute To date

EMP

54

Page 55: Database Lecture 2

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

Page 56: Database Lecture 2

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 ทไมสนใจเรองของเวลา ซงจะไดวา

ผลลพธคอ

(Q) ปจจบนฝง 219 อยในคอกไหนกตว (A) คาถามลกษณะนจะเรยกวา current query ซงเปน query ทสนใจเฉพาะปจจบนซงจะไดวา

ผลลพธคอ

(Q) ฝง 219 เคยอยในคอกไหนมาบาง (A) คาถามลกษณะนจะเรยกวา sequenced query ทสนใจเรองเวลาดว

ผลลพธคอ

เปนตวระบวาเปนเวลาปจจบน

ยซงจะไดวา

56

Page 57: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 Temporal Join (Q) ฝงไหนอยในคอกเดยวกนบาง (A) ทาไดโดยการ Join ตารางเดยวกนเขาดวยกน ซงจะไดวา

(Q) ณ เวลานฝงไหนอยในคอกเดยวกนบาง (A) ซงจะไดวา

(Q) ฝงไหนเคยอยในคอกเดยวกนมาบางในชวงเวลาทแตกตางกน (ไม (A) คาถามนเปน non-sequenced query ซงจะไดวา

ผลลพธคอ

(Q) ฝงไหนเคยอยในคอกเดยวกน.ในชวงเวลาเดยวกน (อดต, ปจจบน (A) คาถามนเปน sequenced query ซงจะมได 4 กรณ 1) L2 มาอยกอน จากนน L1 ตามมาแลวออกไปกอน แลว L

เหตผลทใช < กเพราะตองการไมใหผลลพธออกมาซา

จาเปนตองอยพรอมกนในเวลาเดยวกนกได)

, อนาคต)

2 ออกตามไป

57

Page 58: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 2) L2 มาอยกอน จากนน L1 ตามมา แลว L2 ออกตามดวย L1

3) เหมอนกรณท 1 แต L1 และ L2 สลบกน 4) เหมอนกรณท 2 แต L1 และ L2 สลบกน ดงนนจะไดวา

กรณท 1

กรณท 2

กรณท 3

กรณท 4

ผลลพธคอ

ดงนนการเชคจะตองเชคทง 4 กรณแลวเอามา Union กน

58

Page 59: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 Modifying Valid-Time State Table ความยากของเรองไมไดมแค Select เทานนแตยากท modify ดวย ตวอยาง ตวอยางนเปนการตอนวว ดง Diagram ขางลางน

ววตวผ

ววตวผทตอนแลว

ลกววตวเมย ววตวเมย

จากตารางจะไดวาฝง 101 เปน c (calf) ตงแต 1998-01-01 ถง1998-03-2 และ 1998-03-23 กถกตอนจนถงปจจบน Insert ถามการ Insert Fact ทเรมเปนจรงตงแตวนน จะไดวา

Delete ถามการ Delete Lot 101 ในปจจบน เราไมสามารถทจะใชวา

ซงเปน Logical delete แตตองใชวา

ววตวเมยทตอนแลว

ลกววตวผ

3

59

Page 60: Database Lecture 2

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

Page 61: Database Lecture 2

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

Page 62: Database Lecture 2

Advanced Database Systems 1/49-IS20.2

Update from_date

Delete PV

โดย PV = Period of Validity (ชวงเวลาท Fact เดมเปนจรงอย) PA = Period of Application (ชวงเวลาทจะ Delete) ตวอยาง

ตองการ Delete ฝง 234 ในชวงเวลาตงแต 1998-10-01 ถง 1998-10-22 เราจะตองทาใหครบทง 4 กรณขางตนจะไดวา

กรณท 2

กรณท 1

กรณท 3

กรณท 4

62

Page 63: Database Lecture 2

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

Page 64: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 Temporal SQL (Back in the Pens)

From_date และ to_date ให DBMS ดแล

Select (Q) ปจจบนมฝง 219 กตว (A) เปน current query

(Q) ในอดตฝง 219 เคยอยคอกไหนกตว (A) เปน sequenced query

(Q) ในอดตฝง 219 เคยอยคอกไหน เมอไหร กตว (A) เปน non-sequenced query

(Q) ปจจบนฝงไหนอยคอกเดยวกนบางในปจจบน (A)

(Q) ฝงไหนเคยอยคอกเดยวกนดวยกนบาง (A) เปน sequenced query

(Q) ฝงไหนเคยอยคอกเดยวกนบาง (ไมตองอยพรอมกนกได) (A) เปน non-sequenced query

(หมายเหต Temporal SQL ยงไมถก implement ใน DBMS ยหอใดๆ)

64

Page 65: Database Lecture 2

Advanced Database Systems 1/49-IS20.2 Modify

(Q) Insert ฝง 234 ตงแต 1998-03-26 ถง 1998-04-14 (A) เปน Sequenced insert

(Q) เอาฝง 234 ออกตงแต 1998-10-01 จนถง 1998-10-22 (A) เปน Sequenced Delete

(R) Update ฝง 234 เปน s ตงแต 1998-03-01 จนถง 1998-04-01 (B) เปน Sequenced Update

จะเหนวาใชงานไดงายขนมาก แต DBMS กทางานหนกขนเยอะ

Transaction-Time State Table

จะเกบขอมลทไมไดเปลยนแปลงตามเวลา แตขอมลทเปลยนแปลงไปนนขนอยกบเครองมอหรอความสามารถในการวดคาในขณะนน จากตวอยางขางลางเปนการบนทกความสวางของดวงดาว

ความสวาง

เวลาทบนทก

ชอดาว ตาแหนงของดาวบนทองฟา

65

Page 66: Database Lecture 2

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


Related Documents