[MSDA]Kiến Trúc Lưu Trữ Cơ Sở Dữ Liệu Trong SQL Server

SQL Server Data Files

SQL Server lưu trữ Data file, Transaction record và Transaction Lof files. Những File này được gom nhóm trong một tên CSDL luận lý gọi là Database. Một CSDL SQL Server có thể có nhiều Data files và Transaction Log file, nhưng thông thường thì chỉ một log file là đủ.

Khi một CSDL được tao ra, nó có một Primary Data file với đuôi mở rộng là .mdf (VD: QuanLyBanHang.mdf) và có thể tùy chỉnh thêm nhiều Secondary Data files với đuôi mở rộng là .ndf. Những Data file này có thể được gom nhóm trong một nhóm luận lý gọi là filegroup . Một CSDL phải có ít nhất là một Transaction Log file. Với đuôi mở rộng là .ldf .

Log File và Data File

Một database có 2 loại file: data files và log files

Data files chứa data (của table) và index

Log files thông tin về các hoạt động và giao tác, dùng cho việc giám sát hệ thống và phục hồi dữ liệu

Data Files

Hai loại data files: primary và secondary.

primary data file:

Ø 1 csdl luôn có,

Ø chứa thông tin hệ thống của csdl (của user và của catalog csdl)

Ø chứa pointer chỉ đến các secondary data file

Ø có đuôi file là .mdf

secondary data file:

Ø 1 csdl không bắt buộc phải có, user có thể tùy chọn tạo ra hay không

Ø chứa các đối tượng dữ liệu và user data

Ø có thể lưu khác ổ đĩa với primary data file

Ø có đuôi file là .ndf

Log Files

Ø Log files thông tin về các hoạt động và giao tác, dùng cho việc giám sát hệ thống và phục hồi dữ liệu

Ø 1 cơ sở dữ liệu có ít nhất 1 log file

Ø có thể tạo nhiều log file cho 1 cơ sở dữ liệu

Ø có đuôi file là .ldf

Filegroups

Ø Một filegroup là 1 nhóm logic (không phải nhóm vật lý) các data file

Ø Tạo ra để quản lý data file dễ dàng hơn

Ø Thuận lợi và nhanh chóng cho việc bảo trì hệ thống và sao lưu / phục hồi dữ liệu

Ø Có 2 loại filegroups: primary và user-defined.

primary filegroup

Ø chứa primary data file và

Ø chứa các secondary data không nằm các filegroup khác

Ø chứa tất cả các system table

clip_image001user-defined filegroup

Ø chứa các secondary files

Ø chứa các database objects

Ø 1 cơ sở dữ liệu chứa tối đa 32,766 user-defined filegroups.

 

Khi làm việc với filegroups (dùng SSMS hay lệnh ALTER DATABASE), cần chú ý đến các file- group properties sau:

■ 1 cơ sở dữ liệu có 1 default filegroup. Khi ta tạo 1 database object mà không cho vào filegroup nào, thì mặc định sẽ thuộc default filegroup.

■ Nên dùng các read-only filegroups nếu không cần thay đổi dữ liệu. Tất cả các file- groups đều có thể gán là read-only trừ primary filegroup.

Nếu có những table có mức cập nhật dữ liệu thường xuyên — như table Order Details — thì ta nên:

Ø Tạo cơ sở dữ liệu có nhiều secondary data files

Ø Lưu dữ liệu trên nhiều ổ đĩa khác nhau

Ø Nhóm các file vào 1 filegroup

Ø Lưu Order Detail table trong filegroup để các query truy vấn dữ liệu đồng thời trên nhiều đĩa

Cấu hình Data Files and Log Files

Cấu hình lúc dùng:

Ø Lệnh CREATE DATABASE

Ø Lệnh ALTER DATABASE

Ø dùng SSMS

image

Ø Tạo file lưu dữ liệu càng lớn càng ít bị phân mảnh dữ liệu

Ø Tạo file lưu dữ liệu lớn thì lâu bị vượt dung lượng file

Ø Có thể chỉnh file size tự tăng (autogrowth)

Ø Chú ý max size vượt khả năng lưu của ổ đĩa

Ø Nên tao nhiều file ndf trên nhiều ổ đĩa (còn trống nhiều) để chống phân mảnh và truy xuất nhanh

Kiến trúc Data file:

– Data file lưu: data + index + metadata

– Data file lưu theo cấu trúc gồm EXTENT và PAGE

Extent và Page:

– Một page có kích thước 8KB

– Một extent có kích thước 64KB, gồm 8 page liên tiếp nhau

– Có 2 loại extent: Uniform extent và Mixed extent

– Mixed extent: lưu dữ liệu của nhiều đối tượng (ví dụ của 2 bảng dữ liệu)

– Uniform extent: lưu dữ liệu của cùng một đối tượng (ví dụ của 1 bảng dữ liệu)

clip_image002

– Mỗi data file bắt đầu bằng Mixed extent chứa các page lưu thông tin quản lý nội dung của data file

– Page đầu tiên của extent đầu tiên (mixed extent) của data file gọi là File header page. File header page lưu: logical name, physical name, max size, growth increment, và filegroup của data file

– Không như trong mixed extent, mỗi page trong Uniform extent luôn chứa dữ liệu của cùng một đối tượng

– Mỗi page dành ra 96 byte lưu thông tin quản lý page, trong đó chứa: page number, loại dữ liệu trong page, không gian còn trống của page, và đối tượng của dữ liệu trong page

– Có nhiều loại page, phân loại theo dữ liệu của page:

o data page

o index page

o Text/Image Pages

o Global Allocation Map (GAM) and Secondary Global Allocation Map (SGAM) Pages

o Page Free Space (PFS) Pages

o Index Allocation Map (IAM) Pages

o Bulk Changed Map (BCM) Pages

o Differential Changed Map (DCM) Pages

Data page:

clip_image003[4]

Transaction Log file

– Là file binary

– Không thể xem nội dung bằng các chương trình xử lý văn bản bình thường (như Notepad)

– Có thể có 1 hay nhiều file ldf, thường chỉ có 1 file

– Cấu trúc file ldf do SQL Server tạo tự động và không cho điều chỉnh

clip_image004

clip_image005Lập phương án lưu cơ sở dữ liệu:

– Thông thường, ta khó dự đoán kích cỡ và mức tăng kích cỡ của 1 cơ sở dữ liệu

– Kích cỡ mặc định thường không thích hợp, chỉ nên dùng học hay demo mà thôi

– Thường người viết ứng dụng yêu cầu các kích cỡ cho csdl của họ

– Nếu phải tính kích cỡ thì ta có thể thực hiện 7 bước để dự đoán (xem tài liệu tham khảo)

– Cách tính thực dụng: dùng csdl lưu dữ liệu thử, sau đó nhân dung lượng lên 1.5 lần

– Dữ liệu thử phải bao gồm tất cả các đối tượng dữ liệu sẽ dùng

Leave a comment