190 likes | 465 Views
ĐỀ TÀI 3.5 ĐIỀU KHIỂN TRUY XUẤT ĐỒNG THỜI. Nhóm xx Phạm Thị Ân – 0912023 Hà Thị Phương Thảo – 0912430 Nguyễn Thị Thanh Thảo – 0912431 Võ Thanh Tuấn – 0912517 Nguyễn Văn Viễn – 0912531 Phạm Danh Vũ - 0912601. Tổng quan về đề tài 3.5. Transaction. Lock. Demo. Q & A. Tổng quan.
E N D
ĐỀ TÀI 3.5ĐIỀU KHIỂN TRUY XUẤT ĐỒNG THỜI Nhóm xx Phạm Thị Ân – 0912023 Hà Thị Phương Thảo – 0912430 Nguyễn Thị Thanh Thảo – 0912431 Võ Thanh Tuấn – 0912517 Nguyễn Văn Viễn – 0912531 Phạm Danh Vũ - 0912601
Tổng quan về đề tài 3.5 Transaction Lock Demo Q & A
Tổng quan Commit & Rollback Các mức Cô lập Autonomous Transaction Transaction Demo
Giaotáclàgì? 1 2 Tínhchấtcủagiaotác 3 Quảnlýgiaotáctrongoracle Cáchkhaibáo 1 giaotác 4 Tổngquanvềgiaotác(Transaction)
1. GiaoTác(Transaction) làgì KháiNiệm • Một transaction (giaotác) làmộtđơnvịcôngviệc logic chứamộthoặcnhiềucâulệnhSQL. Đặcđiểm • Mộtgiaotáccótínhnguyêntố. • Tấtcảnhữngảnhhưởngcủacâulệnh SQL bêntronggiaotáccóthểđược committed (lưuvàocơsởdữliệu) hay là rolled back (xemnhưchưathựchiệntừcơsởdữliệu)
2. Tínhchấtcủamộtgiaotác • GiaotáclàmộtđơnvịcótínhACID: • Nguyêntố(Atomicity) hoặctấtcảcácgiaotácthànhcônghoặckhôngcógiaotácnàothựchiện • NhấtQuán(Consistency) Dữliệuphảinhấtquán(Không có giao dịch khác thực hiện đồng thời) saukhithựchiệngiaotác. • CôLập(Isolation): Thayđổitrênmộtgiaotáckhôngthayđổimộtgiaotáckhác. Cho dù nhiều giao dịch có thể thực hiện đồng thời, hệ thống phải đảm bảo rằng đối với mỗi cặp giao dịch Ti, Tj , hoặc Tj kết thúc thực hiện trước khi Ti khởi động hoặc Tj bắt đầu sự thực hiện sau khi Ti kết thúc. • BềnVững(Durability): saukhithaotácthànhcôngkếtquảđượclưutrongcơsởdữliệu.
3. Quảnlýgiaotáctrong oracle • Một transaction trong Oracle bắtđầukhicâulệnh SQL đầutiênđượcgọithựchiện. Câulệnh SQL khiđượcgọithựchiệnsẽtạoramộtinstance, chophépcáccâulệnh DML và DDL thaotác. • Khimột transaction bắtđầu, Oracle sẽgiànhmộtkhoảngkhônggianchonótạiundo tablespacehoặcrollback segmentđểphụcvụchoviệc rollback saunày. • Một transaction kếtthúckhimộttrongcáctrườnghợpsauxảyra: • User sửdụngcâulệnh Commit hay Rollback . • Khi user đangsửdụngcáccâulệnh DDL (Create, Drop, hay Alter). Nếu transaction hiệnhànhchứacáccâulệnh DML (Insert, Delete, hay Update), Oracle sẽ commit transaction trước, sauđósẽthựcthivà commit cáccâulệnh DDL sau. • User ngắtkếtnốiđến Oracle, thì transaction hiệnhànhsẽđược commit. • Mộttiếntrìnhbịngừngmộtcáchđộtngột, thì transaction hiệnhànhsẽđược rollback. • Saukhi transaction nàykếtthúc, thìcâulệnh SQL tiếptheosẽđượcthựcthi.
4. KhaibáoGiaoTác Declare // thựchiệnkhaibáo Begin //thựcthicáccôngviệc NếuthànhcôngCommit ; Nếuthấtbại Rollback; End;
1 Commit 2 Rollback 3 Rollback ngầmđịnh SavePoint 4
1. Commit Commit một transaction cónghĩalàhoàntấtthànhcôngmọithaotác SQL đượcthựcthibêntrong transaction đó. • CơChế: Trướckhimột transaction commit thì: 1. Oracle sẽtạora rollback segment lưuvàocác buffer (trong SGA – System Global Area). Thông tin của rollback chứacácgiátrịcủadữliệucũ (dữliệubịthayđổibởicáccâulệnh SQL trong transaction). 2. Oracle sẽtạora redo log trong redo log buffer của SGA. Redo log record chứanhữngthayđổicủadata blockvànhữngthayđổitrongrollback block. Nhữngthayđổinàysẽđượcghixuốngđĩatrướckhi transaction commit. 3. Nhữngthayđổinằmtrong database buffer SGA sẽđượcghixuốngđĩatrướckhi transaction commit.
1. Commit Khimột transaction commit thì: 1. Nhữngthayđổibêntrong rollback segment sẽ commit, vàlưulạinhữngthayđổinàyxuống database. 2. Log writer process (LGWR) ghi redo log trong SGA’s redo log buffers vào file redo log. Đâylàtiếntrìnhđể commit hoàntoàn. 3. Oracle sẽnhảkhóatrên rows và tables. 4. Oracle thôngbáo transaction đãhoàntất.
1. Commit • Cúpháp:
2. Rollback • Rollback cónghĩalàhoàntáclạitấtcảnhữngthayđổitrêndữliệuđượcthựchiệnbởicáccâulệnh SQL bêntrong transaction chưađượccommit • Cáctrườnghợp Rollback 1. Rollback do lỗicâulệnhsqlhoặc do xảyra deadlock 2. Rollback một save point 3. Rollback mộtgiaodịch do yêucầungườidùng 4. Rollback mộtgiaodịch do sựcốbấtthường 5. Rollback cácgiaodịchkhônghoànthànhkhiphụchồisausựcố
2. Rollback • Nếu rollback toànbộ transaction màkhôngsửdụngcácsavepointthì: • Oracle sẽhoàntáclạitấtcảnhữngthayđổi do cáccâulệnh SQL thựchiệnbêntrong transaction bằngcáchsửdụngnhữnggiátrịtươngứngbêntrong undo tablespacehoặc rollback segment. • Oracle sẽnhảkhóatấtcảcácđơnvịdữliệu do transaction đó lock. • Kếtthúc transaction.
Rollback • CúPháp
3. Rollback ngầmđịnh • Rollback ngầmđịnhxảyrakhi: • Đốivớitrườnghợpthựchiệncáccâusql Insert , update , delete thìlúcnày oracle tựđộngtạosavepointẩn , nếutrườnghợpthựcthicáclệnhtrênbịlỗichẳnghạnnhưsaicúphápthìnósẽtựđộng rollback vềđếntrạngtháisavepointmànóđãtạotrướcđó.
4. SavePoint • Chúng ta cóthểđánhdấulạinhữngđiểmcần rollback trong transaction bằngcáchsửdụngsavepoint. Savepointsẽ chia transaction thànhnhữngphầnnhỏhơn. • CơChế: Khimột transaction rollback đếnmộtsavepointthì: • Oracle chỉ rollback nhữngcâulệnhnằmsausavepointnày. • Oracle chỉlưulạinhữngsavepointcòntồntạisaukhi rollback. • Oracle sẽnhảkhóatrêntấtcả table và row màtrướcđóbịkhóa (tínhtừsavepointnàyđến rollback).
SavePoint • Cúpháp: