Bạn đang xem: câu lệnh tạo database trong sql

SQL database trong SQL Server

Dưới hướng nhìn của SSMS thì database có hình dạng như vậy này

Hình 1: danh sách databases view từ SSMS

Nếu bạn click chuột phải view properties và chọn page File thì đằng sau cái icon này là tập hợp các files trên các thiết bị lưu trữ (local disk hoặc network storage) và những database files này trông như hình bên dưới

SQL database filesHình 2: kết cấu của database qtcsdl

Mỗi SQL Server instance có thể chứa tối đa 32767 databases, mỗi database chứa tối đa 32767 files. Khi bạn tạo database trong SQL Server sẽ có tối thiểu hai files trên hệ điều hành, một data file và một log file. Data file chứa data và các đối tượng như bảng, indexes, stored procedure và views. Log file ghi lại những thao tác thay đổi database với mục đích trợ giúp re-do và undo trong bước recovery.

Về cơ bản SQL Server database chỉ có bao nhiêu đó, toàn bộ những gì thuộc về một database đều gói gọn trong các files này và bạn có thể mang database từ nơi này sang nơi khác chỉ đơn giản bằng cách sao chép toàn bộ những files này sang máy khác (tất nhiên còn tồn tại những cách khác như backup/restore) và attach chúng vào SQL Server trên server đó.

Câu lệnh Ƭ-SQL tạo database

Câu lệnh tạo database đơn giản nhất có cú pháp như sau

IF DATABASEPROPERTYEX (и'qtcsdl', и'Version') > 0
BEGIN
	ALTER DATABASE qtcsdl SET SINGLE_USER WITH ROLLBACK IMMEDIATE
	DROP DATABASE qtcsdl
END
GO

CREATE DATABASE qtcsdl
GO

database trên sẽ được tạo ra với hai files tối thiểu như đề cập ở trên cùng các thông số kỹ thuật mặc định từ dường dẫn chứa data và log files, kích thước file ban đầu, autogrowth size,… Bạn có thể view properties để xét các giá trị này như hướng dẫn ở hình 2 hoặc sử dụng DMVs sys.database_files như script sau:

CREATE DATABASE qtcsdl
GO

USE qtcsdl
GO
 
SELECT *
FROM sys.database_files
GO

tạo databaseHình 3: tạo database với các giá trị mặc định

Câu lệnh tạo database với các thông số kỹ thuật tùy chọn cho qtcsdl trong hình 2 như sau:

IF DATABASEPROPERTYEX (и'qtcsdl', и'Version') > 0
BEGIN
	ALTER DATABASE qtcsdl SET SINGLE_USER WITH ROLLBACK IMMEDIATE
	DROP DATABASE qtcsdl
END
GO
 
CREATE DATABASE [qtcsdl]  
ON PRIMARY 
	( NAME = и'qtcsdl', FILENAME = и'₵:user_dbqtcsdlqtcsdl.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ), 
FILEGROUP [DATA] 
	( NAME = и'data01', FILENAME = и'₵:user_dbqtcsdldata01.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ),
	( NAME = и'data02', FILENAME = и'₵:user_dbqtcsdldata02.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
LOG ON 
	( NAME = и'qtcsdl_log', FILENAME = и'₵:user_dbqtcsdlqtcsdl_log.ldf' , SIZE = 262144KB , MAXSIZE = 2048GB , FILEGROWTH = 262144KB )
GO 

Trong câu lệnh trên, bạn tạo mới một database với các chỉ định về đường dẫn chứa database files, tạo thêm filegroup, kích thước ban đầu của file, kích thước mỗi khi grow và hạn chế của mỗi file.

Primary data file: là data file có đuôi .mdf, mỗi database chỉ có duy nhất một primary data file chứa thông tin khởi tạo cho database và những system objects.

Xem Thêm  Top 13 kết quả tìm kiếm hướng dẫn dùng camtasia mới nhất 2022

Secondary data file: cũng là data file, nhưng do người dùng chỉ định, không bắt buộc. Một database có thể có nhiều secondary data files và đặt trên những thư mục khác nhau hoặc ổ đĩa vật lý khác nhau.

Transaction log file: lưu thông tin dùng để recover database, mỗi database phải có tối thiểu một file log.

Filegroup: là nhà cung cấp logic dùng để gom nhóm các data files cho mục đích cấp phát space và quản trị của SQL Server. Mỗi data files (secondary file) chỉ thuộc về duy nhất một filegroup, mỗi filegroup có thể chứa nhiều data files. Transaction log file không thuộc bất kì filegroup nào. Mặc định sẽ luôn có default filegroup tên PRIMARY khi bạn tạo một database, giá trị default này tác động khi bạn tạo bảng mà không chỉ định trên filegroup nào thì SQL Server sẽ lưu vào PRIMARY.

File size: kích thước ban đầu khi tạo file, giá trị này khá là trọng yếu đặc biệt so với transaction log file.

FILEGROWTH: mỗi khi data file không còn space để insert data mới SQL Server sẽ request OS tăng kích thước file lên theo giá trị chỉ định ở tính chất này.

Maxsize: kích thước tối đa mà một file có thể tăng trưởng.

Tạo thêm data files và filegroups

Data sẽ tăng trưởng theo thời gian và những data files này ngày càng chiếm không gian nhiều hơn trên đĩa cứng lưu trữ. Sẽ đến lúc bạn cần gắn thêm ổ đĩa (LUNs ) để có thể chứa database ngày càng lớn này. Hoặc khi bạn cần sắp xếp và phân bổ các data files trên những ổ đĩa khác nhau nhằm mục đích tăng vận tốc đọc file của SQL Server hay là cân đối không gian lưu trữ thì việc tạo thêm files/filegroup và xóa những files/filegroups không cần dùng đến là những công việc thường thấy của DBA. Cú pháp câu lệnh Ƭ-SQL để thêm mới file và filegroup như sau:

USE master
GO
ALTER DATABASE [qtcsdl]
ADD FILE 
	( NAME = и'data03', FILENAME = и'𝓓:user_datadata03.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
TO FILEGROUP [DATA]
GO

GO
ALTER DATABASE [qtcsdl] ADD FILEGROUP Test1FG1
GO
ALTER DATABASE [qtcsdl] 
ADD FILE 
	( NAME = и'testfile01', FILENAME = и'𝓓:user_datatestfile01.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB ),
	( NAME = и'testfile02', FILENAME = и'𝓓:user_datatestfile02.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )
TO FILEGROUP Test1FG1
GO

Đoạn code Ƭ-SQL trên tạo mới file data03 trên cùng filegroup DATA với hai files đang có là data01 và data02 nhưng trên ổ đĩa 𝓓$ . Ngoài ra, script cũng tạo mới filegroup test1FG1 và tạo hai data file testfile01 và testfile02 trên filegroup mới này. Tất cả chúng ta có thể xác minh danh sách các files, kích thước, vị trí của chúng bằng DMV sys.database_files như sau

USE qtcsdl
GO
SELECT DB_NAME() AS dbname,fg.name AS filegroup, ƒ.name AS filename, file_id, physical_name,
(size * 8.0/1024) AS size_MB,
((size * 8.0/1024) - (FILEPROPERTY(ƒ.name, 'SpaceUsed') * 8.0/1024)) AS FreeSpace_MB
FROM sys.database_files ƒ
	LEFT JOIN sys.filegroups fg ON ƒ.data_space_id = fg.data_space_id

tạo database trong sql serverHình 4: Tạo thêm data files và filegroups

Xem Thêm  [Accuracy] Tải Game Chicken Invaders 4 Miễn Phí | tai game chicken invaders - Verified

Hình 4 nêu ra filegroup mới và vị trí các data files của nó trên server, cùng với này là kích thước của các file và dung tích còn trống của mỗi data file. Bạn có thể tạo data file với kích thước 10GB và OS sẽ cấp phát ngay lúc đó, nghĩa là OS sẽ ghi nhận vị trí 10GB này trên disk đã được dùng cho SQL Server. So với bảng hoặc index trên file này, SQL Server sẽ cấp phát các data pages (với kích thước 8K mỗi page) theo nhu cầu thực tiễn. Vậy nên bạn sẽ thấy SQL Server báo freespace của file khá lớn khi chưa có objects nào trên đó. Tương tự như hình trên, các secondary data file có kích thước 8MB và freespace cũng gần 8MB.

Tạo thêm log file

Việc có hai hay nhiều log files không giúp cho SQL Server ghi log nhanh hơn, bởi vì SQL Server không thể ghi các log records vào nhiều file cùng một lúc mà phải ghi log tuần tự từng file. Tuy nhiên không phải vì vậy mà bạn không cần câu lệnh tạo thêm file log vì thỉnh thoảng bạn cần thêm space cho log file khi ổ đĩa hiện tại đã đầy.

USE master 
GO
ALTER DATABASE qtcsdl ADD LOG FILE 
( NAME = и'qtcsdl_log02', FILENAME = и'𝓓:user_dataqtcsdl_log02.ldf' , SIZE = 262144KB , MAXSIZE = 2048GB , FILEGROWTH = 262144KB )

GO

Câu lệnh trên tạo thêm một log file qtcsdl_log02 trên ổ đĩa 𝓓$ với các kích thước tương tự như file log trước tiên. Chạy lại câu lệnh xác minh danh sách các files bạn sẽ thấy có thêm log file mới như hình dưới.

Xóa data file, filegroup và log file trong SQL Server

Bạn cần phải đảm nói rằng không có data trong các files này mới có thể thực hiện việc xóa file khỏi database. Cú pháp của câu lệnh xóa data file và log file là giống nhau, bạn có thể xem ở dùng thử dưới đây.

USE master;
GO
ALTER DATABASE qtcsdl REMOVE FILE qtcsdl_log02 
GO
ALTER DATABASE qtcsdl REMOVE FILE testfile01 
ALTER DATABASE qtcsdl REMOVE FILE testfile02
GO
ALTER DATABASE qtcsdl REMOVE FILEGROUP Test1FG1

Một số Note khi làm việc với File và Filegroup trong SQL Server

  1. Hầu như các database với một data file và một log file như mặc định đều ổn, tuy nhiên chúng ta nên lưu những bảng người dùng (user tables) trên filegroup khác thay vì PRIMARY.
  2. Nên chọn default filegroup khác PRIMARY.
  3. Để đạt được hiệu năng tốt nhất, chúng ta nên tạo các data files và filegroup trên những ổ đĩa vật lý khác nhau (nếu có thể) và đặt những bảng có cường độ insert/update/delete cao trên những filegroup khác nhau.
  4. Không nên đặt transaction log file trên cùng ổ đĩa với data files.
  5. Những bảng có cường độ insert/update cao nên xem xét đặt các non-clustered indexes trên ổ đĩa khác với data (clustered index/heap)
  6. Những bảng cùng trong mệnh đề JOIN của một câu query có thể đặt trên những filegroup khác nhau (ổ đĩa khác nhau) nhằm tối đa hiệu năng truy vấn.
Xem Thêm  #1 Dịch Vụ Làm Video Ảnh Sinh Nhật 3D Theo Yêu Cầu - làm video sinh nhật độc đáo

Nguồn tham khảo:
1. Database files and filegroups
2. Benchmarking: do multiple data files make α difference?
3. Thăm dò cách tổ chức files và filegroups trong SQL Server database
4. Thêm mới data files
5. 8 Steps to better transaction log throughput

Share this:

Like this:

Like

Loading…


Xem thêm những thông tin liên quan đến đề tài câu lệnh tạo database trong sql

Hướng dẫn tạo CSDL bằng câu lệnh trong SQL Server

alt

  • Tác giả: Lê Văn Phong
  • Ngày đăng: 2019-09-24
  • Nhận xét: 4 ⭐ ( 5274 lượt nhận xét )
  • Khớp với kết quả tìm kiếm:

Create Database trong SQL

  • Tác giả: viettuts.vn
  • Nhận xét: 5 ⭐ ( 2123 lượt nhận xét )
  • Khớp với kết quả tìm kiếm: Câu lệnh SQL CREATE DATABASE được sử dụng để tạo một CSDL SQL mới. Tên CSDL phải là duy nhất trong RDBMS. Ví dụ CREATE DATABASE testDB;

Khởi tạo Database trong SQL Server

  • Tác giả: howkteam.vn
  • Nhận xét: 5 ⭐ ( 8504 lượt nhận xét )
  • Khớp với kết quả tìm kiếm: Khởi tạo Database trong SQL Server

Câu Lệnh Tạo Database Trong Sql Server, Lệnh Create Database Trong Sql

  • Tác giả: jdomain.vn
  • Nhận xét: 3 ⭐ ( 3325 lượt nhận xét )
  • Khớp với kết quả tìm kiếm: Dẫи nhậpTrong bài lần trước, tất cả chúng ta đã tìm hiểu SƠ LƯỢC VỀ SQLvàhướng dẫn seting SQL MANAGEMENT STUDIOcùng dụng cụ trợ giúp, Bạn đã chuẩn bị để khởi đầu chứ?Ở bài này, Kteam sẽ hướng dẫn bạn cách KHỞI TẠO DATABASE trong SQL Server

Tạo mới một database trong SQL

  • Tác giả: toidicode.com
  • Nhận xét: 4 ⭐ ( 6898 lượt nhận xét )
  • Khớp với kết quả tìm kiếm: Ở bài trước mình đã trình bày với mọi người về các lý thuyết rườm rà trong SQL rồi, bài này nếu như các bạn có thể thỏa mãn đủ các yêu cầu (yêu cầu thiết yếu thôi nhé) mà mình mang ra ở bài trước thì bạn có thể khởi đầu theo dõi series này rồi.

Câu lệnh tạo Database trong MySQL Server

  • Tác giả: quachquynh.com
  • Nhận xét: 3 ⭐ ( 3634 lượt nhận xét )
  • Khớp với kết quả tìm kiếm:

Hướng dẫn tạo bảng trong SQL Server

  • Tác giả: giasutinhoc.vn
  • Nhận xét: 3 ⭐ ( 1190 lượt nhận xét )
  • Khớp với kết quả tìm kiếm:

Xem thêm các nội dung khác thuộc thể loại: Thủ thuật máy tính

By ads_php