SQL Server 架构、数据库文件组和数据库对象

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];

默认数据库的作用主要包括:

  • 简化连接:用户无需每次连接时都指定数据库。
  • 安全性:限制用户连接到特定数据库,防止未经授权的访问。

结论

通过合理设计和管理这些组件,可以显著提高数据库的性能和可维护性。

相关推荐
Run Out Of Brain11 分钟前
使用MySQL APT源在Linux上安装MySQL
linux·数据库·mysql
深圳行云创新18 分钟前
ChatBI来啦!NBAI 正式上线 NL2SQL 功能
数据库·人工智能·chatgpt·ai智能体
睿思达DBA_WGX31 分钟前
Oracle 11g rac + Dataguard 环境调整 redo log 大小
数据库·oracle
躲在没风的地方31 分钟前
spring cloud微服务分布式架构
java·spring boot·spring cloud·微服务·架构
无炘32 分钟前
论述数据、数据库、数据库管理系统、数据库系统的概念。
数据库·oracle
Dragonlongbo41 分钟前
Redis
数据库·redis·缓存
雪芽蓝域zzs41 分钟前
MySQL(二)MySQL DDL数据库定义语言
数据库·mysql
mm_exploration2 小时前
halcon三维点云数据处理(六)find_box_3d
前端·数据库·3d
Edward-tan2 小时前
【玩转全栈】----用户管理案例
数据库·后端·django