Chia Sẽ Kinh Nghiệm Về IT



Tìm Kiếm Với Google
-


Gởi Ðề Tài Mới  Gửi trả lời
 
Công Cụ Xếp Bài
Tuổi 22-10-2015, 05:27 PM   #1
hoctinhoc
Guest
 
Trả Lời: n/a
Filegroup Trong SQL Server, hướng dẫn sử dụng
Filegroup Trong SQL Server

Vũ Huy Tâm


Hướng dẫn sử dụng File Group

http://laptrinh.vn/d/4791-table-part...em-co-ban.html

http://laptrinh.vn/d/4792-table-part...-nang-cao.html

Filegroup là tên đặt cho một nhóm data file trong SQL Server. Filegroup không chứa dữ liệu, mà chỉ định nghĩa ở mức logic các data file nằm trong đó, và đến lượt các data file này mới thực chứa dữ liệu. Bạn có thể hình dung filegroup giống như một thư mục của Windows, và các data file thuộc về filegroup đó tương tự như các file trong thư mục. Khi bạn tạo một database, ở mức đơn giản nhất sẽ có hai file được tạo ra là một log file (.ldf) và một data file (.mdf). Tuy nhiên một điều có thể bạn ít để ý hơn là cũng có một filegroup được tạo ra cùng với nó:


CREATE DATABASE TestDB
GO
USE TestDB
GO
--xem thông tin các file trong database
SELECT * FROM SYS.DATABASE_FILES

-- xem thông tin các filegroup trong database
SELECT * FROM SYS.FILEGROUPS






Như kết quả hai câu truy vấn trên cho thấy, một file group có tên “PRIMARY” được tạo ra, và data file của database thuộc về group này (data_space_id chính là filegroup ID). Từ đây bạn có thể tạo filegroup và file cho database:
-- tạo filegroup
ALTER DATABASE TestDB ADD FILEGROUP FG1
ALTER DATABASE TestDB ADD FILEGROUP FG2

-- thêm 2 data file vào FG1 và 1 file vào FG2

ALTER DATABASE TestDB ADD FILE (NAME = N'F11', FILENAME = N'D:\DATA\TestDB_F11.ndf') TO FILEGROUP FG1

ALTER DATABASE TestDB ADD FILE (NAME = N'F12', FILENAME = N'E:\DATA\TestDB_F12.ndf') TO FILEGROUP FG1
ALTER
DATABASE TestDB ADD FILE (NAME = N'F2', FILENAME = N'D:\DATA\TestDB_F2.ndf') TO FILEGROUP FG2



Khi tạo bảng, một cách mặc định bảng sẽ được tạo ở primary filegroup. Nhưng bạn có thể chỉ định filegroup mà bạn muốn bảng được lưu vào:


CREATE TABLE dbo.Tbl_1(Col_1 INT, Col_2 VARCHAR(50)) ON FG1



Mệnh đề “ON FG1″ sẽ lái đích đến cho bảng Tbl_1 là filegroup FG1.
Microsoft khuyến cáo trong mọi trường hợp bạn nên tạo thêm filegroup để lưu dữ liệu thay vì lưu dữ liệu vào primary filegroup. Lý do là vì primary filegroup là nơi chứa meta data của database (các thông tin định nghĩa bảng, index, view, user…) và toàn bộ mã sql của thủ tục, hàm. Nếu lưu chung dữ liệu vào đây sẽ xảy ra tranh chấp đọc/ghi giữa dữ liệu và meta data.


Không chỉ có vậy, filegroup là một công cụ rất mềm dẻo và hữu ích cho người thiết kế database. Vì mỗi filegroup có thể chứa nhiều file, bạn có thể chỉ định các file này nằm trên các ổ cứng khác nhau (như FG1 chứa 2 file nằm trên 2 ổ D: và E. Khi cần bổ sung dung lượng cho database, bạn chỉ việc cắm thêm ổ cứng và khai báo thêm 1 file từ ổ cứng này vào filegroup.



Khi ghi dữ liệu vào file, SQL Server sử dụng cơ chế quay vòng (round-robin) ghi một phần vào file thứ nhất, đến 1 phần vào file thứ hai và cứ tiếp tục, rồi lại quay trở lại file đầu. Vì thế tất cả các file trong filegroup đều được sử dụng và bạn sẽ thấy kích thước của chúng cùng nhau tăng lên. Cơ chế này giúp tăng tốc độ ghi khi các file nằm ở các ổ cứng khác nhau. Tất nhiên nếu dùng SAN và các ổ cứng có chung LUN (Logical Unit Number) thì không có gì khác nhau. Hiệu năng ghi chỉ tăng lên khi các ổ cứng thuộc về các LUN khác nhau (qua cổng I/O độc lập). Ở đây bạn thấy filegroup còn ảo hơn cả folder trong window: với folder các file nằm trong nó đều phải nằm trên cùng ổ cứng đó; trong khi với filegroup các file bên dưới có thể nằm ở bất kỳ đâu.


Việc tạo nhiều filegroup cũng giúp bạn phân chia dữ liệu dễ dàng, ví dụ với một bảng dữ liệu rất lớn và chỉ được cập nhật mỗi tháng một lần, bạn có thể lưu bảng này vào một filegroup riêng và các bảng còn lại vốn được đọc/ghi rất nhiều vào một filegroup khác. Khi backup, bạn có thể đặt chế độ backup cho từng filegroup, và bạn chỉ cần backup mỗi tháng một lần cho filegroup chứa bảng ít được cập nhật và hàng ngày cho filegroup kia.
Đồng thời, bạn cũng có thể lưu index vào một filegroup riêng với bảng và điều này cũng giúp tăng tốc độ truy xuất dữ liệu.






  Trả lời ngay kèm theo trích dẫn này
Gửi trả lời


Công Cụ
Xếp Bài

Quyền Hạn Của Bạn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Hình Cảm xúc đang Mở
[IMG] đang Mở
Mã HTML đang Tắt




Bây giờ là 12:42 AM. Giờ GMT +7



Diễn đàn tin học QuantriNet
quantrinet.com | quantrimang.co.cc
Founded by Trương Văn Phương | Developed by QuantriNet's members.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.