Upload
itnoi
View
299
Download
1
Embed Size (px)
Citation preview
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
25/09/2010 2Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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
25/09/2010 3Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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)
25/09/2010 4Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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
25/09/2010 5Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
Tiến trình ghi sổ (Logging Process)
Buffer cacheYêu cầu thay đổi dữ liệu được trình ứng dụng gởi đi
11
Các trang dữ liệu được định vị � đọc vào buffer cache �được sửa đổi.
2
Các sửa đổi được ghi nhận vào sổ ghi giao tác trên đĩa
3
Khi checkpoint xảy ra � các giao tác đã commit được ghi xuống database
4
Tổ chức vật lý của CSDL (tt.)
25/09/2010 7Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
Log file: .ldf
Data file:.mdf or .ndf
Extent: 8 contiguous 8KB pages
Page: 8KB
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
25/09/2010 8Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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ụ
25/09/2010 9Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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
25/09/2010 10Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
Ví dụ: tạo CSDL QLBanHang (tt.)
25/09/2010 11Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
Ví dụ: tạo CSDL QLBanHang (tt.)
25/09/2010 12Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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
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
25/09/2010 13Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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
25/09/2010 14Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
Các đối tượng hệ thống Các đối tượng người
dùng định nghĩa
Chứa dữ liệu mang tính lịch sử & dữ
liệu được phân hoạch và các đối
tượng người dùng định nghĩa khác
Các đối tượng hệ thống Các Filegroup Tập tin sổ ghi (.ldf)
321
4
Minh họa File Group
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
25/09/2010 16Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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
25/09/2010 17Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
Ví dụ: tạo File Group (tt.)
25/09/2010 18Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
--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
Ví dụ: tạo File Group (tt.)
25/09/2010 19Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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
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
25/09/2010 20Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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
25/09/2010 21Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
Ví dụ: tạo schema
25/09/2010 22Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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
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
25/09/2010 23Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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)
25/09/2010 24Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
Ví dụ: tạo Database snapshot
25/09/2010 25Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
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
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
25/09/2010 26Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
Source DB Snapshot DB
Copy-On-Write
SELECT …
SELECT …UPDATE …
Cách thức database snapshots làm việc
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
25/09/2010 28Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc
Partitioned Tables là gì ?
< 2003 2003 2004 >= 2005
Sales.Orders
Dữ liệu được phân hoạch theo chiều ngang
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
FOR VALUES ('01/01/2003', '01/01/2004', '01/01/2005')
CREATE PARTITION FUNCTION pf_OrderDate (datetime)AS RANGE RIGHTFOR 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
FOR VALUES ('01/01/2003', '01/01/2004', '01/01/2005')
CREATE PARTITION FUNCTION pf_OrderDate (datetime)AS RANGE LEFTFOR VALUES ('01/01/2003', '01/01/2004', '01/01/2005')
Tạo Partition Functions (Hàm phân hoạch)
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
CREATE PARTITION SCHEME ps_OrderDateAS PARTITION pf_OrderDate TO (fg1, fg2, fg3, fg4, fg5)
< 2003 2003 2004 >= 2005
Tạo Partition Scheme?
25/09/2010Ts. Nguyễn An Tế - Nguyễn Tiến Dũng - Nguyễn Thúy Ngọc 33