SQL Server 架构分为物理架构和逻辑架构。
SQL Server 的物理架构主要组件:
数据库文件:每个数据库由至少两个文件组成:主数据文件(.mdf)和日志文件(.ldf)。此外,还可以有一个或多个辅助数据文件(.ndf)。
内存架构:包括缓冲池(Buffer Pool),用于缓存数据页和索引页以提高访问速度。
进程架构:包括 SQL Server 的各个进程和线程,如 SQL Server 主服务(sqlservr.exe)和 SQL Server 代理服务(sqlagent.exe)。
SQL Server 的逻辑架构主要组件:
数据库文件组是 SQL Server 中用于管理数据文件的逻辑单元。它们将数据库文件组织在一起,以便更好地管理和优化性能。
文件组是数据库文件的逻辑集合。每个文件组包含一个或多个数据文件。文件组分为以下两种类型:
创建文件组的语法如下:
ALTER DATABASE MyDatabase
ADD FILEGROUP MyFilegroup;
在文件组中添加文件的语法如下:
ALTER DATABASE MyDatabase
ADD FILE
(
NAME = MyDataFile,
FILENAME = 'C:\Data\MyDataFile.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
TO FILEGROUP MyFilegroup;
将表或索引放置在特定文件组中的语法如下:
CREATE TABLE MyTable
(
ID INT PRIMARY KEY,
Name NVARCHAR(50)
) ON MyFilegroup;
表是数据库中存储数据的基本结构。创建表的语法如下:
CREATE TABLE Employees
(
EmployeeID INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
HireDate DATE
);
视图是基于 SQL 查询结果集的虚拟表。创建视图的语法如下:
CREATE VIEW EmployeeNames
AS
SELECT FirstName, LastName
FROM Employees;
索引用于加速数据检索。创建索引的语法如下:
CREATE INDEX IX_Employees_LastName
ON Employees (LastName);
存储过程是预编译的 SQL 代码块,用于执行特定任务。创建存储过程的语法如下:
CREATE PROCEDURE GetEmployeeByID
@EmployeeID INT
AS
BEGIN
SELECT * FROM Employees
WHERE EmployeeID = @EmployeeID;
END;
触发器是在特定事件发生时自动执行的存储过程。创建触发器的语法如下:
CREATE TRIGGER trgAfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
PRINT 'A new employee has been added.';
END;
SQL Server 支持多种数据库类型,主要包括:
系统数据库:SQL Server 自带的数据库,用于管理 SQL Server 实例和系统任务。
用户数据库:用户创建的数据库,用于存储应用程序数据。
默认数据库是用户连接到 SQL Server 实例时,如果没有指定数据库,将自动连接到的数据库。默认数据库通常设置为 master
,但也可以为每个用户单独设置。
设置用户默认数据库的语法如下:
ALTER LOGIN [username] WITH DEFAULT_DATABASE = [database_name];
默认数据库的作用主要包括:
通过合理设计和管理这些组件,可以显著提高数据库的性能和可维护性。