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

To Chuc Luu Tru CSDL_02

  • Upload
    itnoi

  • View
    299

  • Download
    1

Embed Size (px)

Citation preview

Page 1: To Chuc Luu Tru CSDL_02

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

Page 2: To Chuc Luu Tru CSDL_02

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

Page 3: To Chuc Luu Tru CSDL_02

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

Page 4: To Chuc Luu Tru CSDL_02

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

Page 5: To Chuc Luu Tru CSDL_02

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

Page 6: To Chuc Luu Tru CSDL_02

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

Page 7: To Chuc Luu Tru CSDL_02

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

Page 8: To Chuc Luu Tru CSDL_02

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

Page 9: To Chuc Luu Tru CSDL_02

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

Page 10: To Chuc Luu Tru CSDL_02

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

Page 11: To Chuc Luu Tru CSDL_02

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

Page 12: To Chuc Luu Tru CSDL_02

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

Page 13: To Chuc Luu Tru CSDL_02

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

Page 14: To Chuc Luu Tru CSDL_02

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

Page 15: To Chuc Luu Tru CSDL_02

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

Page 16: To Chuc Luu Tru CSDL_02

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

Page 17: To Chuc Luu Tru CSDL_02

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

Page 18: To Chuc Luu Tru CSDL_02

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

Page 19: To Chuc Luu Tru CSDL_02

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

Page 20: To Chuc Luu Tru CSDL_02

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

Page 21: To Chuc Luu Tru CSDL_02

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

Page 22: To Chuc Luu Tru CSDL_02

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

Page 23: To Chuc Luu Tru CSDL_02

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

Page 24: To Chuc Luu Tru CSDL_02

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

Page 25: To Chuc Luu Tru CSDL_02

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

Page 26: To Chuc Luu Tru CSDL_02

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

Page 27: To Chuc Luu Tru CSDL_02

Source DB Snapshot DB

Copy-On-Write

SELECT …

SELECT …UPDATE …

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

Page 28: To Chuc Luu Tru CSDL_02

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

Page 29: To Chuc Luu Tru CSDL_02

Partitioned Tables là gì ?

< 2003 2003 2004 >= 2005

Sales.Orders

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

Page 30: To Chuc Luu Tru CSDL_02

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)

Page 31: To Chuc Luu Tru CSDL_02

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)

Page 32: To Chuc Luu Tru CSDL_02

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?

Page 33: To Chuc Luu Tru CSDL_02

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