Chương 1 “GIỚI THIỆU VỀ XỬ LÝ GIAO TÁC” trình bày khái niệm về giao tác được sử dụng để biểu diễn một đơn vị logic xử lý cơ sở dữ liệu phải được hoàn thành trọn vẹn để đảm bảo tính đúng đắn, thảo luận vấn đề kiểm soát đồng thời xuất hiện khi nhiều giao tác được đệ trình cùng một lúc có thể gây trở ngại lẫn nhau dẫn đến việc sinh ra các kết quả sai và vấn đề khôi phục từ các giao tác bị hỏng. Chương 2 “CÁC KỸ THUẬT ĐIỀU KHIỂN ĐỒNG THỜI ” sẽ trình bày các công nghệ liên quan đến việc điều khiển trong các quá trình truy cập cơ sở dữ liệu. Chương 3 “QUẢN LÝ GIAO TÁC TRONG SQL” sẽ mô tả việc thể hiện các giao tác SQL thông qua một số chương trình cụ thể. Cuối cùng là phần kết luận tổng kết lại những gì đã làm được trong luận văn, hướng phát triển của luận văn.
5 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Cuối cùng tác giả xin bày tỏ lòng biết ơn chân thành tới TS. Nguyễn Tuệ, thầy đã luôn ân cần, chỉ bảo, động viên, giúp đỡ tác giả trong suốt quá trình thực hiện luận văn. Tác giả xin chân thành cảm ơn gia đình, bạn bè, đồng nghiệp đã luôn động viên và giúp đỡ về nhiều mặt trong thời gian qua, xin chân thành cảm ơn các thầy cô giáo Trường Đại học Công nghệ và Khoa sau đại học đã tạo điều kiện giúp đỡ để tác giả hoàn thành Luận văn này. 6 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com CHƢƠNG 1: GIỚI THIỆU VỀ XỬ LÝ GIAO TÁC 1.1 Giới thiệu về xử lý giao tác Trong phần này sẽ giới thiệu các khái niệm của các giao tác thực thi đồng thời và cách khôi phục lại do các giao tác lỗi.1 Hệ thống đơn người dùng và đa người dùng Một tiêu chuẩn để phân loại một hệ cơ sở dữ liệu đó là dựa vào số lượng người dùng có thể truy cập vào hệ thống tại cùng một thời điểm.
Hệ quản trị cơ sở dữ liệu (DBMS - Database Management System) là đơn người dùng (single-user) nếu tại một thời điểm chỉ có một người dùng truy cập hệ thống và là đa người dùng (multi-user) nếu có nhiều người dùng có thể truy cập hệ thống một cách đồng thời. Ví dụ: Hệ thống đặt vé máy bay được sử dụng đồng thời bởi hàng trăm đại lý bán vé. Các hệ thống trong các nhà băng, các hãng bảo hiểm, các sở giao dịch chứng khoán và các hệ thống khác tương tự đều được nhiều người sử dụng đệ trình các giao tác một cách đồng thời [1]. Nhiều người dùng sử dụng các hệ thống máy tính có thể truy cập các cơ sở dữ liệu cùng một lúc là do khái niệm đa chương trình, nó cho phép máy tính thực thi nhiều chương trình -hoặc tiến trình- tại cùng một thời điểm.
Nếu chỉ có 1 bộ xử lý trung tâm (CPU), trên thực tế nó chỉ có thể thực thi nhiều nhất 1 xử lý tại một thời điểm. Tuy nhiên, các hệ điều hành đa chương trình thực thi một số câu lệnh của một tiến trình, sau đó hoãn tiến trình đó lại và thực thi một số câu lệnh của tiến trình tiếp theo và v. Một tiến trình sẽ lại được tiếp tục tại điểm mà nó bị hoãn khi đến lượt nó được sử dụng CPU lại. Như vậy, việc thực hiện đồng thời của các tiến trình thực chất là sự đan xen, như minh họa ở hình 1.1, chỉ ra 2 tiến trình A và B được thực hiện một các đồng thời theo cách đan xen.
Sự đan xen giữ gìn sự bận rộn của CPU khi một 7 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com tiến trình đòi hỏi một thao tác vào hoặc ra, chẳng hạn như việc đọc một khối dữ liệu từ đĩa [1]. Nếu hệ thống máy tính có nhiều bộ xử lý (nhiều CPU), việc xử lý song song của nhiều tiến trình có thể thực hiện được, như minh họa trong hình 1.1 với các tiến trình C và D [1]. Trong DBMS đa người dùng, các mục dữ liệu được lưu trữ là nguồn tài nguyên chính cho các chương trình ứng dụng hoặc người sử dụng tương tác truy cập đồng thời để liên tục lấy thông tin từ cơ sở dữ liệu và thay đổi cơ sở dữ liệu [1]. A A B B C CPU1 D CPU2 t1 t2 t3 t4 Hình 1.1 Xử lý đan xen và xử lý song song của giao tác đồng thời 1.2 Các giao tác, các thao tác Đọc và Ghi, vùng đệm DBMS Mô ̣t giao tác l à mô ̣t đơn vị logic x ử lý CSDL, nó bao gồm một hoặc nhiều thao tác truy cập dữ liệu như chèn, xoá, sửa đổi hoặc lấy thông tin ra.
Các thao tác trong cơ sở dữ liệu cấu thành một giao tác có thể hoặc được nhúng vào một chương trình ứng dụng hoặc được chỉ rõ một cách tương tác thông qua một ngôn ngữ truy vấn bậc cao như SQL [1]. 8 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Mô ̣t hê ̣ thố ng OLTP (xử lý giao tác trực tuyế n ) hoạt động theo thời gian thực nhằ m thu t hập và xử lý dữ liệu có liên quan đến giao tác và gởi các thay đổ i đế n các cơ sở dữ liê ̣u dùng chung và các file khác. Trong viê ̣c xử lý giao tác trực tuyế n , các giao tác được thực hiện ngay , trái với việc xử lý theo lô , các giao tác được lưu trong một khoảng thời gian sau đó mới đươ ̣c thực hiê ̣n. Đa số các xử lý theo lô như viê ̣c chuyể n khoản đươ ̣c thực hiê ̣n vào giờ đêm.
Các kết quả của một xử lý giao tác trực tuyến thì có ngay trong cơ sở dữ liê ̣u. Nó khẳng định giao tác đã hoàn thành. Các ví dụ thông du ̣ng nhấ t của viê ̣c xử lý giao tác trực tuyến là hệ thống đặt chổ Hàng Không và hê ̣ thố ng giao dich ̣ Ngân hàng. Hãng IBM đã định nghĩa các loại giao tác sau: Tại một thời điểm có một câu lệnh được thực hiện trên mộ t cơ sở dữ liê ̣u.
Mô ̣t đơn vi ̣công viê ̣c (bao gồ m nhiề u câu lê ̣nh ) đươ ̣c thực hiê ̣n trên mô ̣t cơ sở dữ liê ̣u. Mô ̣t đơn vi ̣công viê ̣c trên môi trường phân bố (bao gồ m nhiề u câu lê ̣nh ) đươ ̣c thực hiện trên nhiề u cơ sở dữ liê ̣u , tại một thời điểm thì một câu lệnh đươ ̣c thực hiê ̣n trên mô ̣t cơ sở dữ liê ̣u. Mô ̣t yêu cầ u trên hê ̣ thố ng phân bố (bao gồ m nhiề u câu lê ̣nh ) thực hiê ̣n trên nhiề u cơ s ở dữ liệu , tại một thời điểm thì có nhiều câu lệnh được thực hiê ̣n trên mô ̣t cơ sở dữ liê ̣u. Các hệ quản trị cơ sở dữ liệu thực hiện các giao tác bằng cách sử dụng các lệnh hoặc là được nhúng vào trong chương trình ứng dụng hoặc tương tác theo danh nghĩa qua một ngôn ngữ truy vấn bậc cao như SQL.
Trong chương trình ứng dụng, biên giới giao tác được xác định một cách rõ ràng thông qua 9 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com các câu lệnh Begin Transaction và End Transaction. Trong trường hợp này tất cả các thao tác truy cập cơ sở dữ liệu giữa 2 câu lệnh đó được coi như tạo ra một giao tác. Một chương trình ứng dụng có thể chứa nhiều hơn một giao tác nếu nó chứa nhiều biên giới giao tác. Nếu các thao tác CSDL không cập nhật CSDL mà chỉ lấy thông tin ra thì gọi đó là giao tác được gọi là giao tác chỉ đọc (read only transaction).
Chúng ta giải thích các khái niệm xử lý giao tác thông qua một mô hình một cơ sở dữ liệu đơn giản.Về cơ bản, một cơ sở dữ liệu được miêu tả như một tập hợp các file dữ liệu và mỗi bản ghi của file có một số các trường. Các thao tác truy cập CSDL cơ bản mà một giao tác có thể có là [1]: Read_item(X): Đọc một mục dữ liệu có tên X trong CSDL vào một biến chương trình. Để đơn giản ký hiệu, ta giả sử biến đó cũng có tên là X Write_item(X): Ghi giá trị của biến chương trình X vào một mục của CSDL có tên X Đơn vị cơ bản của truyền dữ liệu từ đĩa vào bộ nhớ chính là một khối. Việc thực hiện một câu lệnh read_item(x) bao gồm các bước sau [1]: Bước 1: Tìm địa chỉ của khối đĩa chứa mục dữ liệu X Bước 2: Sao chép khối đĩa đó vào một vùng đệm trong bộ nhớ chính (nếu khối đĩa đó chưa có trong vùng đềm bộ nhớ chính) Bước 3: Sao chép dữ liệu X từ vùng đệm vào biến chương trình X Việc thực hiện một câu lệnh write_item(X) bao gồm các bước sau: Bước 1: Tìm địa chỉ của khối đĩa chứa mục dữ liệu X Bước 2: Sao chép khối đĩa đó vào một vùng đệm trong bộ nhớ chính (nếu khối đĩa đó chưa có trong vùng đệm) 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Bước 3: Sao chép mục dữ liệu X từ biến chương trình X vào đúng vị trí của nó trong vùng đệm Bước 4: Lưu khối đã được cập nhật từ vùng đệm trở lại đĩa (hoặc là ngay lập tức hoặc sau 1 khoảng thời gian).
Trong thực tế, bước 4 là một bước cập nhật cơ sở dữ liệu trên đĩa. Trong một số trường hợp vùng đệm không được lưu ngay vào đĩa nếu có sự thay đổi được tạo ra cho vùng đệm. Thông thường, quyết định khi nào lưu lại một khối đĩa đã được thay đổi trong vùng đệm bộ nhớ chính được điều khiển bởi bộ phận quản lý phục hồi dữ liệu (recovery manager) của DBMS phối hợp với hệ điều hành cơ sở. Nói chung, DBMS sẽ duy trì một số vùng đệm trong bộ nhớ chính để chứa các khối dữ liệu bao gồm các mục cơ sở dữ liệu đang được xử lý.
Khi tất cả các vùng đệm này đã bị chiếm giữ và có thêm các khối dữ liệu phải được sao chép vào bộ nhớ thì chính sách thay thế một số vùng đệm được sử dụng để lựa chọn vùng đệm nào sẽ được thay thế. Nếu lựa chọn vùng đệm đã có thay đổi dữ liệu trong vùng đệm đó phải được ghi trở lại đĩa trước khi được tái sử dụng [1]. Một giao tác bao gồm các thao tác read_item và write_item để truy cập và cập nhật cơ sở dữ liệu.2 thể hiện một ví dụ về 2 giao tác đơn giản.