1. SQL Server 架构
SQL Server 架构分为物理架构和逻辑架构。
1.1 物理架构
SQL Server 的物理架构主要组件:
-
数据库文件:每个数据库由至少两个文件组成:主数据文件(.mdf)和日志文件(.ldf)。此外,还可以有一个或多个辅助数据文件(.ndf)。
- 主数据文件(.mdf):包含数据库的启动信息和主要数据。
- 辅助数据文件(.ndf):可选,用于拆分数据以提高性能或管理大型数据库。
- 日志文件(.ldf):记录数据库的所有事务,确保数据的完整性和恢复。
-
内存架构:包括缓冲池(Buffer Pool),用于缓存数据页和索引页以提高访问速度。
-
进程架构:包括 SQL Server 的各个进程和线程,如 SQL Server 主服务(sqlservr.exe)和 SQL Server 代理服务(sqlagent.exe)。
1.2 逻辑架构
SQL Server 的逻辑架构主要组件:
- 数据库:SQL Server 实例中的一个或多个数据库,每个数据库都包含一组表和其他数据库对象。
- 表:存储数据的基本结构,包含行和列。
- 索引:用于加速数据检索的结构。
- 视图:虚拟表,基于 SQL 查询结果集。
- 存储过程:预编译的 SQL 代码块,用于执行特定任务。
- 触发器:自动在特定事件(如插入、更新、删除)发生时执行的存储过程。
2. 数据库文件组
数据库文件组是 SQL Server 中用于管理数据文件的逻辑单元。它们将数据库文件组织在一起,以便更好地管理和优化性能。
2.1 文件组的定义
文件组是数据库文件的逻辑集合。每个文件组包含一个或多个数据文件。文件组分为以下两种类型:
- 主文件组(Primary Filegroup):包含主数据文件(.mdf)和任何其他文件。每个数据库必须有一个主文件组。
- 用户定义文件组(User-defined Filegroup):由用户创建,用于存储特定数据。
2.2 创建和管理文件组
创建文件组的语法如下:
sql
ALTER DATABASE MyDatabase
ADD FILEGROUP MyFilegroup;
在文件组中添加文件的语法如下:
sql
ALTER DATABASE MyDatabase
ADD FILE
(
NAME = MyDataFile,
FILENAME = 'C:\Data\MyDataFile.ndf',
SIZE = 5MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB
)
TO FILEGROUP MyFilegroup;
将表或索引放置在特定文件组中的语法如下:
sql
CREATE TABLE MyTable
(
ID INT PRIMARY KEY,
Name NVARCHAR(50)
) ON MyFilegroup;
3. 数据库对象
3.1 表
表是数据库中存储数据的基本结构。创建表的语法如下:
sql
CREATE TABLE Employees
(
EmployeeID INT PRIMARY KEY,
FirstName NVARCHAR(50),
LastName NVARCHAR(50),
HireDate DATE
);
3.2 视图
视图是基于 SQL 查询结果集的虚拟表。创建视图的语法如下:
sql
CREATE VIEW EmployeeNames
AS
SELECT FirstName, LastName
FROM Employees;
3.3 索引
索引用于加速数据检索。创建索引的语法如下:
sql
CREATE INDEX IX_Employees_LastName
ON Employees (LastName);
3.4 存储过程
存储过程是预编译的 SQL 代码块,用于执行特定任务。创建存储过程的语法如下:
sql
CREATE PROCEDURE GetEmployeeByID
@EmployeeID INT
AS
BEGIN
SELECT * FROM Employees
WHERE EmployeeID = @EmployeeID;
END;
3.5 触发器
触发器是在特定事件发生时自动执行的存储过程。创建触发器的语法如下:
sql
CREATE TRIGGER trgAfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
PRINT 'A new employee has been added.';
END;
4. 数据库类型和默认数据库的作用
4.1 数据库类型
SQL Server 支持多种数据库类型,主要包括:
-
系统数据库:SQL Server 自带的数据库,用于管理 SQL Server 实例和系统任务。
- master:存储所有系统级信息。
- model:新数据库的模板。
- msdb:用于 SQL Server 代理服务和计划任务。
- tempdb:存储临时表和临时数据。
-
用户数据库:用户创建的数据库,用于存储应用程序数据。
4.2 默认数据库的作用
默认数据库是用户连接到 SQL Server 实例时,如果没有指定数据库,将自动连接到的数据库。默认数据库通常设置为 master
,但也可以为每个用户单独设置。
设置用户默认数据库的语法如下:
sql
ALTER LOGIN [username] WITH DEFAULT_DATABASE = [database_name];
默认数据库的作用主要包括:
- 简化连接:用户无需每次连接时都指定数据库。
- 安全性:限制用户连接到特定数据库,防止未经授权的访问。
结论
通过合理设计和管理这些组件,可以显著提高数据库的性能和可维护性。