CẤU TRÚC CƠ SỞ DỮ LIỆU CỦA
SQL SERVER 7.0
I.CẤU TRÚC CSDL CỦA SQL SERVER 7.0 :
SQL Server tổ chức dữ liệu lưu trong CSDL thành những thành phần luận lý. User làm
việc trên những thành phần luận lý này như bảng (table), view, procedure… Thành phần vật lý
của những file thì trong suốt (transparent), chỉ có người quản lý CSDL mới được làm việc trên
đó.
SQL Server có 4 CSDL hệ thống (master, msdb, model, temdb database) và các CSDL
của user. Hình minh họa
• Master database: ghi lại cấu hình hệ thống của SQL Server. Nó ghi lại tất cả tài khoản
đăng ký của user và cấu hình hệ thống, những file primary chứa thông tin khởi động của
CSDL của user, chứa thông tin khởi động của SQL Server. Những thao tác sau gây ra
những thay đổi trong master database:
• Tạo , thay đổi, xóa CSDL.
• Thay đổi transaction log.
• Thêm hay xóa của những sever sử dụng thủ tục hệ thống như sp-addserver (thêm
server) and sp-dropserver (bỏ server).
• Temdb database: chứa những bảng tạm và những stored procedure tạm. Những bảng
tạm và những stored procedure của user khi nối kết vào hệ thống được lưu trong temdb
database. Khi SQL khởi động thì tất cả các bảng tạm và các stored procedure trong
temdb database đều mất.
Stored procedure: là 1 tập hợp biên dòch trước của những câu lệnh của Transact-
SQL được lưu và xử lý như 1 đơn vò (unit). Stored procedure sẵn sàng cho việc quản lý
SQL Server và hiển thò thông tin của CSDL, của những người sử dụng. SQL Server cung
cấp những stored procedure gọi là stored procedure hệ thống.
• Model database: được dùng như 1 khuôn mẫu của CSDL trong hệ thống. Khi tạo ra 1
CSDL thì phần đầu của CSDL là bản sao của model database, phần còn lại là những
trang trống.
• Msdb database: SQL Server Agent dùng msdb database để lập kế hoạch alert, job.
Alert: là 1 đònh nghóa của người sử dụng đáp ứng 1 sự kiện của SQL Server. Alert có
thể thực thi cả nhiệm vụ đònh nghóa hoặc gởi e-mail đến 1 người chỉ đònh.
Job: là sự thực hiện 1 hành động quản lý chứa 1 hoặc nhiều bước, thay thế cho thuật
ngữ task của SQL Server 6.5.
II. CẤU TRÚC CSDL VẬT LÝ:
II.1Trang (page):
Đơn vò cơ bản lưu trữ dữ liệu là trang (page). Trong SQL Server 7.0 , 1 trang có kích thước
8MB, ta sẽ có 128 trang/1MB.
96 byte đầu của mỗi trang chứa header của trang gồm thông tin hệ thống như loại trang,
số vùng trống của trang.
Cấu trúc trang dữ liệu:
Các hàng dữ liệu (data row) được đưa vào tuần tự ngay sau page header, row offset
được bắt đầu từ cuối trang, chỉ đến data row và cho biết byte bắt đầu của data row, kích thước
hàng tối đa là 8060 byte.
II.2 Extent:
Extent là đơn vò cơ bản chỉ vùng lưu bảng và index. Mỗi extent gồm 8 trang liên tục
nhau. Có 2 loại extent:
• Mixed extent có thể lưu những đối tượng khác nhau.
• Uniform extent chỉ có thể lưu 1 đối tượng duy nhất.
II.3Những loại file trong CSDL:
SQL Server có 3 loại file:
• Primary file: là file bắt đầu của CSDL. Mỗi CSDL chỉ có 1 file primary, tên file có
phần mở rộng là .mdf.
• Secondary file: là file lưu những gì còn lại của CSDL mà không chứa trong primary
file, có thể có nhiều file secondary, tên file có phần mở rộng là .ndf.
• Log file: chứa những thông tin trans† tion log , được dùng để khôi phục CSDL, mỗi
CSDL có ít nhất 1 log file , tên file có phần mở rộng là .ldf.
File của SQL Server có 2 tên:
• Logical_file_name: là tên dùng trong những câu lệnh Transact_SQL.
• Os_file _name: là tên file vật lý, chỉ rõ đường dẫn của file
MyDB_primary làtên logical_file_name, c:\Mssql7\Data\MyData1.mdf là tên os_file_name.
Những trang trong file được đánh số bắt đầu từ 0. Mỗi file có 1 số ID. Mỗi trang trong
file gồm cả ID file và số thứ tự trang trong file.
Ví dụ: file primary có kích thước 4MB, và secondary có kích thứơc 1 MB.
Trang đầu tiên trong mỗi file là trang header file chứa thông tin về thuộc tính của file.
Trang thứ 9 trong primary file là trang khởi động CSDL chứa thông tin về thuộc tính của CSDL.
PHAN VI:
SAO LệU VAỉ KHOI PHUẽC
CHƯƠNG 1:
GIỚI THIỆU VỀ
SAO CHÉP DỰ PHÒNG (BACKUP) VÀ KHÔI
PHỤC (RECOVERY)
CƠ SỞ DỮ LIỆU (CSDL)
Những nguyên nhân gây ra mất dữ liệu:
• Đóa cứng hư
• Vô ý hay cố ý sửa đổi dữ liệu như xóa hay thay đổi dữ liệu.
• Trộm cắp
• Virus
Để tránh việc mất dữ liệu, chúng ta nên thường xuyên sao lưu cơ sở dữ liệu. Nếu như dữ
liệu hay cơ sở dữ liệu bò hư thì ta có thể dùng bản sao lưu (backup) này để khôi phục lại cơ sở
dữ liệu bò mất.
I. SAO LƯU CSDL:
Sao lưu (backup) 1 cơ sở dữ liệu (CSDL) là tạo 1 bản sao CSDL , ta có thể dùng bản sao để
khôi phục lại CSDL nếu CSDL bò mất. Bản sao gồm tất cả những file có trong CSDL kể cả
transaction log.
Transaction log ( hay log file) chứa những dữ liệu thay đổi trong CSDL (Ví dụ như khi
ta thực hiện các lệnh INSERT, UPDATE, DELETE). Transaction log được sử dụng trong suốt
quá trình khôi phục để roll forward những transaction hoàn thành và roll back những
transaction chưa hoàn thành.
Roll back là hủy bỏ giao dòch chưa hoàn thành khi hệ thống xảy ra sự cố,… (hoặc trong
trường hợp sao lưu, khi đã thực hiện xong việc sao lưu mà giao dòch chưa hoàn thành) ( xem chi
tiết ở phần Transaction).
Roll forward là khôi phục tất cả giao dòch đã hoàn thành khi hệ thống xảy ra sự cố,…
(hoặc trong trường hợp sao lưu, những giao dòch đã hoàn thành khi đã thực hiện xong việc sao
lưu ) ( xem chi tiết ở phần Transaction).
Checkpoint là thời điểm ghi lại tất cả những trang dữ liệu thay đổi lên đóa.
Ví dụ minh họa roll back và roll forward:
1. Giao dòch 1 commit trước khi checkpoint, không làm gì cả vì dữ liệu đã được thay đổi trong
CSDL ( ứng với số 1 trong hình).
2. Giao dòch 2 và 4 commit sau khi checkpoint nhưng trước khi hệ thống xảy ra sự cố, do đó
những giao dòch này được tạo lại từ log file. Điều này gọi là roll forward (ứng với số 2 và 4
trong hình).
3. Giao dòch 3 và 5 chưa commit khi hệ thống xảy ra sự cố, do đó những giao dòch này không
được thực hiện và trả về CSDL khi chưa xảy ra giao dòch. Điề này gọi là roll back (ứng với
số 3 và 5 trong hình).
Hình minh họa quá trình khôi phục giao dòch
Checkpoint Hệ thống xảy ra sự cố
Sao lưu 1 transaction log là chỉ sao lưu những thay đổi xảy ra trong transaction log kể từ
lần sao lưu transaction log cuối cùng.
Sao lưu 1 CSDL ghi lại toàn bộ trạng thái của dữ liệu tại thời điểm thực hiện xong sao
lưu.
Trong thời gian sao lưu, SQL Server 7.0 cho phép thực hiện việc giao dòch (transaction).
II. KHÔI PHỤC (RESTORING) CSDL:
Việc khôi phục 1 bản sao lưu CSDL sẽ trả về CSDL cùng trạng thái của CSDL khi ta
thực hiện việc sao lưu. Giao dòch (transaction) nào không hoàn thành trong khi sao lưu
(backup) CSDL được roll back để đảm bảo tính nhất quán CSDL.
Khôi phục 1 bản sao lưu transaction log là áp dụng lại tất cả giao dòch (transaction) hoàn
thành trong transaction log đối với CSDL. Khi áp dụng bản sao lưu transaction log, SQL Server
đọc trước transaction log, roll forward tất cả các transaction . Khi đến cuối bản sao lưu
transaction log, SQL Server roll back tất cả transaction mà không hoàn thành khi ta bắt đầu
thực hiện sao lưu, tạo lại trạng thái chính xác của CSDL tại thời điểm bắt đầu thực hiện sao
lưu.
Ví dụ minh họa sao lưu (backup) và khôi phục (restore) 1 CSDL có xảy ra giao dòch
(transaction) khi thực hiện sao lưu:
1. Bắt đầu backup :giả sử CSDL gồm có các dữ liệu ABC, DEF, GHI, JKL, transaction log file
không có dữ liệu vì không có giao dòch nào xảy ra. Khi đang thực hiện sao lưu (backup)
được một phần dữ liệu thì xảy ra giao dòch, SQL Server 7.0 sẽ ưu tiên cho việc giao dòch
trước, việc sao lưu (backup) tạm thời dừng lại.
database database backup
transaction log
2. Xảy ra giao dòch (transaction), dữ liệu ABC được thay bằng 123, GHI được thay bằng 456.
database database backup
transaction log
ABC
DEF
GHI
JKL
ABC
DEF
GHI
JKL
ABC
DEF
ABC
DEF
GHI
JKL
ABC=123
GHI=456
3. Khi thực hiện giao dòch (transaction) xong, SQL Server thực hiện tiếp việc sao lưu
(backup) , sẽ chép phần còn lại của dữ liệu nhưng dữ liệu đã thay đổi do xảy ra giao dòch.
database database backup
transaction log
4. Khi sao lưu xong phần dữ liệu thì sẽ chép tiếp phần transaction log.
database database backup
transaction log transaction log backup
5. Khi có yêu cầu khôi phục (restore) CSDL , CSDL được khôi phục trước, chép lại toàn bộ
CSDL của bản sao lưu CSDL đó .
restore database backup
ABC
DEF
456
JKL
123
DEF
456
JKL
ABC=123
GHI=456
ABC
DEF
456
JKL
123
DEF
456
JKL
ABC=123
GHI=456
ABC=123
GHI=456
ABC
DEF
456
JKL
ABC
DEF
456
JKL