You are on page 1of 33

BÀI 2: Tổ chức lưu trữ CSDL

Ts. Nguyễn An Tế
Nguyễn Tiến Dũng
Nguyễn Thúy Ngọc
Nội dung trình bày

1. Tổ chức CSDL
2. Chỉ mục (index)
3. Ràng buộc dữ liệu
4. Tối ưu hóa câu truy vấn
5. Tổ chức CSDL trong SQL Server

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 2


Tổ chức CSDL trong SQL Server

1. Tổ chức vật lý của CSDL trong SQL Server


2. Tổ chức các nhóm tập tin (File Group)
3. Schema
4. Database snapshot
5. Tổ chức bảng dữ liệu phân hoạch (Partitioned Table)
6. Gọi thực hiện các xử lý trên Server từ máy Client

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 3


Tổ chức vật lý của CSDL

● Các loại tập tin


– Tập tin chứa dữ liệu (Master Data File)
– Tập tin chứa sổ ghi giao dịch (Log Data File)
● Tập tin dữ liệu
– Chứa dữ liệu của table, index, …
– Kiểu qui ước là MDF
– Khi tập tin MDF đầy, có thể bổ sung thêm các tập tin
phụ có kiểu NDF (secondary data file)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 4


Tổ chức vật lý của CSDL (tt.)

● Tập tin sổ ghi giao dịch


– Ghi nhận lại tất cả các giao dịch trên CSDL
– Kiểu qui ước là LDF
– Có thể có nhiều tập tin có kiểu LDF

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 5


Tiến trình ghi sổ (Logging Process)

Yêu cầu thay đổi Buffer cache


1 dữ liệu được trình
ứng dụng gởi đi Các sửa đổi được ghi
3 nhận vào sổ ghi giao tác
trên đĩa

Các trang dữ liệu


2 được định vị  đọc
vào buffer cache 
Khi checkpoint xảy ra  các
được sửa đổi. 4 giao tác đã commit được ghi
xuống database
Tổ chức vật lý của CSDL (tt.)

Data file:
.mdf or .ndf
Log file:
.ldf

Extent: 8 contiguous
8KB pages

Page: 8KB

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 7


Tạo CSDL

● Các thông tin cần cung cấp


– Tên CSDL
– Tên tập tin dữ liệu, tên tập tin ghi sổ giao dịch: tên
tham chiếu và tên vật lý
– Kích thước khởi tạo ban đầu cho tập tin
– Các khả năng tăng trưởng của tập tin khi bị đầy

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 8


Các khả năng tăng trưởng của tập tin

● Cho phép tăng trưởng tự động


– Khi bị đầy thì tự động tăng trưởng thêm nữa
– Tăng theo tỷ lệ phần trăm hoặc theo số lượng MB
– Tăng không giới hạn hoặc tăng có giới hạn
● Không cho phép tăng trưởng
– Khi bị đầy thì không thể tăng trưởng thêm nữa
– Có thể tăng kích thước khởi tạo. Hoặc
– Tạo thêm các tập tin phụ

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 9


Ví dụ: tạo CSDL QLBanHang

● Chuẩn bị các thư mục


– C:\Data
– C:\Log
● Khởi động công cụ SQL Server Management Studio
– Chọn Databases, nhấn phải chuột chọn New Database
– Khai báo các thông tin trong màn hình tạo CSDL
– Nhấn OK để tạo

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 10


Ví dụ: tạo CSDL QLBanHang (tt.)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 11


Ví dụ: tạo CSDL QLBanHang (tt.)

CREATE DATABASE QLBanHang


ON PRIMARY
( NAME = 'QLBanHang',
FILENAME = 'C:\Data\QLBanHang.mdf' ,
SIZE = 20480KB ,
FILEGROWTH = 1024KB )
LOG ON
( NAME = 'QLBanHang_log',
FILENAME = 'C:\Log\QLBanHang_log.ldf' ,
SIZE = 5120KB ,
FILEGROWTH = 10%)
GO

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 12


Tổ chức CSDL trong SQL Server

1. Tổ chức vật lý của CSDL trong SQL Server


2. Tổ chức các nhóm tập tin (File Group)
3. Schema
4. Database snapshot
5. Tổ chức bảng dữ liệu phân hoạch (Partitioned Table)
6. Gọi thực hiện các xử lý trên Server từ máy Client

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 13


Tổ chức File Group

● File Group là gì ?
– Là cách tổ chức các tập tin dữ liệu thành một nhóm
– Thông qua File Group dữ liệu sẽ được lưu trữ trong các
tập tin đặt trong các thư mục vật lý
– CSDL luôn tồn tại một File Group tên là PRIMARY
– Có thể tạo ra các File Group khác

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 14


Minh họa File Group

Chứa dữ liệu mang tính lịch sử & dữ


liệu được phân hoạch và các đối
Các đối tượng hệ thống Các đối tượng người tượng người dùng định nghĩa khác
dùng định nghĩa
1 2 3

Các đối tượng hệ thống Các Filegroup Tập tin sổ ghi (.ldf)
Ví dụ: tạo File Group

● Khởi động công cụ SQL Server Management Studio


– Chọn database QLBanHang, nhấn phải chuột chọn
Properties
– Chọn trang FileGroups
– Nhấn Add và nhập vào tên của File Group
– Nhấn OK để tạo

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 16


Ví dụ: tạo File Group (tt.)

● Tạo các Data File cho File Group


– Chọn database QLBanHang, nhấn phải chuột chọn
Properties
– Chọn trang Files
– Nhấn Add và nhập thông tin của Data File, xác định File
Group mà nó thuộc về
– Nhấn OK để tạo

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 17


Ví dụ: tạo File Group (tt.)
--Tạo filegroup FG1
ALTER DATABASE QLBanHang
ADD FILEGROUP FG1
GO

--Thêm datafile QLBanHang02 vào FG1


ALTER DATABASE QLBanHang
ADD FILE
( NAME = 'QLBanHang02',
FILENAME = 'C:\Data\QLBanHang02.ndf' ,
SIZE = 20480KB ,
FILEGROWTH = 1024KB )
TO FILEGROUP FG1
GO

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 18


Ví dụ: tạo File Group (tt.)
USE QLBanHang
GO

--Tạo table HANG_HOA trên filegroup FG1


CREATE TABLE HANG_HOA
(mahh INT PRIMARY KEY,
tenhh NVARCHAR(50)
) ON FG1
GO

--Thêm dữ liệu
INSERT INTO HANG_HOA VALUES(1, N’Máy giặt’)

--Liệt kê dữ liệu
SELECT * FROM HANG_HOA

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 19


Tổ chức CSDL trong SQL Server

1. Tổ chức vật lý của CSDL trong SQL Server


2. Tổ chức các nhóm tập tin (File Group)
3. Schema
4. Database snapshot
5. Tổ chức bảng dữ liệu phân hoạch (Partitioned Table)
6. Gọi thực hiện các xử lý trên Server từ máy Client

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 20


Schema

● Schema là gì ?
– Schema là một namespace đối với các đối tượng CSDL
– Một schema định nghĩa một ranh giới mà trong đó tất
cả các tên là duy nhất
– Bên trong một CSDL, tên của schema là duy nhất 
luôn có tên với đường dẫn đầy đủ dạng
server.database.schema.object là duy nhất
– Luôn có một schema mặc định tên là dbo

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 21


Ví dụ: tạo schema
USE QLBanHang
GO

--Tạo schema DanhMuc


CREATE SCHEMA DanhMuc

--Tạo bảng HANG_HOA


CREATE TABLE DanhMuc.HANG_HOA
(mahh INT PRIMARY KEY,
tenhh NVARCHAR(50)
)
GO

--Thêm dữ liệu
INSERT INTO DanhMuc.HANG_HOA VALUES(1, N’Máy giặt’)

--Liệt kê dữ liệu
SELECT * FROM DanhMuc.HANG_HOA

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 22


Tổ chức CSDL trong SQL Server

1. Tổ chức vật lý của CSDL trong SQL Server


2. Tổ chức các nhóm tập tin (File Group)
3. Schema
4. Database snapshot
5. Tổ chức bảng dữ liệu phân hoạch (Partitioned Table)
6. Gọi thực hiện các xử lý trên Server từ máy Client

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 23


Database snapshot

● Database snapshot là gì ?
– Là CSDL được tạo ra bằng cách chụp một CSDL khác
ngay tại một thời điểm
– CSDL được chụp gọi là CSDL nguồn
– Database snapshot chỉ được đọc (read only)
– CSDL nguồn nếu có thay đổi thì CSDL chụp được vẫn có
các dữ liệu không bị thay đổi (ngay thời điểm chụp)

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 24


Ví dụ: tạo Database snapshot
CREATE DATABASE AdventureWorks_Snapshot1200 ON
( NAME = 'AdventureWorks_Data',
FILENAME ='C:\Program Files\Microsoft SQL
Server\MSSQL.1\MSSQL\Data\AW_1200.ss')
AS SNAPSHOT OF AdventureWorks

--Dữ liệu gốc và dữ liệu ảnh giống nhau tại thời điểm chụp
SELECT AddressID, AddressLine1, ModifiedDate
FROM AdventureWorks.Person.Address
WHERE AddressID = 1

SELECT AddressID, AddressLine1, ModifiedDate


FROM AdventureWorks_Snapshot1200.Person.Address
WHERE AddressID = 1

--Thay đổi dữ liệu gốc --> dữ liệu ảnh không thay đổi
UPDATE AdventureWorks.Person.Address
SET AddressLine1 = '1000 Napa Ct.'
WHERE AddressID = 1
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 25
Database snapshot (tt.)

● Các hạn chế của Database snapshot


– Không thể drop database nguồn nếu chưa drop
database snapshots
– SQL Server Management Studio không hỗ trợ tạo
database snapshot. Bạn chỉ có thể tạo nó bằng
Transact-SQL

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 26


Cách thức database snapshots làm việc

Source DB Snapshot DB

SELECT …

Copy-On-Write
UPDATE … SELECT …
Tổ chức CSDL trong SQL Server

1. Tổ chức vật lý của CSDL trong SQL Server


2. Tổ chức các nhóm tập tin (File Group)
3. Schema
4. Database snapshot
5. Tổ chức bảng dữ liệu phân hoạch (Partitioned Table)
6. Gọi thực hiện các xử lý trên Server từ máy Client

Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 28


Partitioned Tables là gì ?

Dữ liệu được phân hoạch theo chiều ngang

< 2003 2003 2004 >= 2005

Sales.Orders
Tạo Partition Functions (Hàm phân hoạch)

Hàm dùng định nghĩa các biên


Biên có thể lệch trái (LEFT) hoặc phải (RIGHT)

< 2003 2003 2004 >= 2005

CREATE PARTITION FUNCTION pf_OrderDate (datetime)


AS RANGE RIGHT
FOR VALUES ('01/01/2003', '01/01/2004', '01/01/2005')
Tạo Partition Functions (Hàm phân hoạch)

Hàm dùng định nghĩa các biên


Biên có thể lệch trái (LEFT) hoặc phải (RIGHT)

<= 2003 2004 2005 > 2005

CREATE PARTITION FUNCTION pf_OrderDate (datetime)


AS RANGE LEFT
FOR VALUES ('01/01/2003', '01/01/2004', '01/01/2005')
Tạo Partition Scheme?

Khai báo gán các phân hoạch cho các File Group
Có thể định nghĩa File Group kế tiếp

< 2003 2003 2004 >= 2005

CREATE PARTITION SCHEME ps_OrderDate


AS PARTITION pf_OrderDate
TO (fg1, fg2, fg3, fg4, fg5)
Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 25/09/2010 33

You might also like