1. Trang chủ
  2. » Công Nghệ Thông Tin

Quản trị cơ sở dữ liệu Oracle 09 control transactions

25 128 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Slide 1

  • Giao tác cơ sở dữ liệu

  • Thực thi câu lệnh SQL

  • Thực thi một câu lệnh SELECT

  • Slide 5

  • Thực thi một câu lệnh UPDATE

  • Thực thi câu lệnh INSERT và DELETE

  • Bắt đầu và kết thúc của một transaction

  • COMMIT

  • ROLLBACK

  • SAVEPOINT

  • SAVEPOINT

  • Monitor and Resolve Locking Conflicts

  • Shared và Exclusive Locks

  • Shared and Exclusive Locks

  • Shared and Exclusive Locks

  • Slide 17

  • Tranh chấp Lock (Lock Contention)

  • Detecting and Resolving Lock Contention

  • Deadlocks

  • Deadlocks

  • Deadlocks

  • Overview of Undo

  • Transactions and Undo Data

  • Slide 25

Nội dung

Quản lý giao tác Giao tác sở liệu • Một giao tác đơn vị công việc nguyên tố chứa nhiều câu lệnh DML – Nguyên tố: phân chia Hoặc thực thành công (committed) • bị hủy bỏ (rolled back) Tính (ACID) giao tác: giao tác phải đảm bảo tính nguyên tố (Atomic), quán (Consistency), lập (Isolation), bền vững (Durability) Thực thi câu lệnh SQL • Câu lệnh SQL ta quan tâm là: SELECT, INSERT, UPDATE, DELETE Thực thi câu lệnh SELECT • • • • • Bước 1: User process chuyển câu lệnh SELECT tới server process server tìm kiếm database buffer cache xem liệu không – Nếu có: tới bước – Ngược lại: tới bước Bước 2: định vị block liệu datafiles Bước 3: copy chúng vào database buffer cache Bước 4: chuyển liệu tới server process Bước 5: trả kết user process Thực thi câu lệnh UPDATE • • • Lock phải tạo dòng liệu index key tương ứng • Từ đây, tất câu truy vấn đến liệu bị thay đổi từ session khác chuyển đến undo data Redo tạo ra: server process ghi thay đổi vào log buffer Việc update thực thi database buffer cache: – Block of table data cập nhật với giá trị column – Giá trị cũ column ghi vào block undo segment Thực thi câu lệnh INSERT DELETE • • Định vị block liên quan database buffer cache Tất change vector áp dụng cho data undo block ghi vào log buffer – Đối với INSERT: vector áp dụng cho undo block rowid dòng liệu – Đối với DELETE: change vector ghi vào undo block toàn dòng liệu Bắt đầu kết thúc transaction • • Một session bắt đầu transaction gặp câu lệnh DML kết thúc gặp câu lệnh COMMIT ROLLBACK Ngoài ra, trường hợp sau ngầm kết thúc transaction: – Chạy câu lệnh DDL (CREATE, ALTER, or DROP) DCL (GRANT or REVOKE) – Thoát khỏi công cụ người dùng (SQL*Plus, SQL Developer …) – Nếu client session thất bại(fail) – Nếu hệ thống xảy hỏng hóc COMMIT • • • • LGWR đẩy liệu từ log buffer vào ổ đĩa (disk) DBWn không làm công việc LGWR báo hiệu transaction hoàn thành Tất session khác vào undo blocks ROLLBACK • • • Oracle giữ hình ảnh (image) liệu vốn trước transaction bắt đầu Rollback hủy bỏ tất thay đổi cách restore lại liệu Các session khác không nhận thay đổi liệu SAVEPOINT • • • Kiểm soát hiệu lệnh ROLLBACK Đảo ngược tất thay đổi sau thời điểm Cú pháp: – SAVEPOINT savepoint; – ROLLBACK TO savepoint; SAVEPOINT Monitor and Resolve Locking Conflicts Shared Exclusive Locks • Exclusive lock: • Shared lock: – Ngăn chặn việc chia sẻ liệu – Lock nắm giữ transaction kết thúc – Cho phép tài nguyên liên quan chia sẻ – Ngăn chặn session khác yêu cầu exclusive lock table Shared and Exclusive Locks Session Session acquire exclusive lock on row empid=25 acquire exclusive lock on row empid=40 and shared lock on table emp and shared lock on table emp Update Emp set salary=100 where empid=25; Update Emp set salary=500 row updated where empid=40; row updated the session will hang until the lock on row empid=25 release Update Emp set salary=500 where empid=25; release exclusive and shared lock Commit; still hold exclusive lock on row empid=40, 25 and shared lock on Emp row updated Commit; Shared and Exclusive Locks acquire exclusive lock on table Emp and release it when DDL statement ends ALTER TABLE emp DROP COLUMN address acquire exclusive lock on row empid=25 and shared lock on table emp Update Emp set salary=100 where empid=25; row updated cannot drop column because shared lock on table emp ALTER TABLE emp DROP COLUMN firstname Commit; Tranh chấp Lock (Lock Contention) • • • Lock contention: hai hay nhiều session muốn exclusive lock row hay object Oracle database cung cấp tiện ích cho việc phát tranh chấp lock Một trường hợp đặc biệt tranh chấp lock deadlock Detecting and Resolving Lock Contention To terminate a session, either use Database Control, or the ALTER SYSTEM KILL SESSION command Deadlocks • • • Hai session block lẫn nhau, session đợi session để giải phóng lock nắm giữ Deadlock DBA, gây nên việc thiết kế chương trình không khoa học Và giải tự động database Deadlocks Deadlocks • • • Nếu deadlock xảy ra, hai session dừng lại chút Một session nhận biết deadlock rollback câu lệnh gây nên deadlock Giải phóng tài nguyên cho session khác Overview of Undo • • • • Undo data is the information needed to reverse the effects of DML statements It is often referred to as rollback data The preupdate version of the data is written out to an undo segment An image of the data before the transaction occurred is constructed from the undo segments Transactions and Undo Data • • • • • When a transaction starts, Oracle will assign it to one (and only one) undo segment All the undo data must be retained until a transaction commits Active undo can never be overwritten Expired undo can be overwritten Unexpired undo can be overwritten, but only if there is a shortage of undo space ... database buffer cache xem có liệu không – Nếu có: tới bước – Ngược lại: tới bước Bước 2: định vị block liệu datafiles Bước 3: copy chúng vào database buffer cache Bước 4: chuyển liệu tới server process... LGWR đẩy liệu từ log buffer vào ổ đĩa (disk) DBWn không làm công việc LGWR báo hiệu transaction hoàn thành Tất session khác vào undo blocks ROLLBACK • • • Oracle giữ hình ảnh (image) liệu vốn... kết user process Thực thi câu lệnh UPDATE • • • Lock phải tạo dòng liệu index key tương ứng • Từ đây, tất câu truy vấn đến liệu bị thay đổi từ session khác chuyển đến undo data Redo tạo ra: server

Ngày đăng: 29/08/2017, 10:16

TỪ KHÓA LIÊN QUAN