文章目录

  • 一、基本介绍
    • 1.1 数据库组成
    • 1.2 数据文件
      • 1、数据文件
      • 2、日志文件
    • 1.3 五大系统数据库
  • 二、master数据库
    • 2.1 基本信息
    • 2.2 限制
    • 2.3 使用建议
  • 三、msdb数据库
    • 3.1 基本信息
    • 3.2 限制
  • 四、model数据库
    • 4.1 基本信息
    • 4.2 限制
  • 五、resource数据库
    • 5.1 基本信息
    • 5.2 resource库相关命令
  • 六、tempdb数据库
    • 6.1 基本概念
    • 6.2 限制
    • 6.3 tempdb库库相关命令

一、基本介绍

1.1 数据库组成

数据库的存储结构分为逻辑存储结构和物理存储结构:

  • 逻辑存储结构

说明数据库是由哪些性质的信息所组成。SQL Server的数据库不仅仅只是数据的存储,所有与数据处理操作相关的信息都存储在数据库中。

  • 物理存储结构

数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。

SQL Server数据库系统中的数据库文件是由数据文件和日志文件组成的,数据文件以盘区为单位存储在存储器中。

1.2 数据文件

1、数据文件

数据库文件是指数据库中用来存放数据库数据和数据库对象的文件,一个数据库可以有一个或多个数据库文件,一个数据库文件只能属于一个数据库。

当有多个数据库文件时,有一个文件被定为主数据文件,用来存储数据库的启动信息和部分或全部数据,一个数据库只能有一个主数据库文件

数据文件则划分为不同的页面和区域,页是SQL Server存储数据的基本单位。

  • 主数据文件

数据库的起点,指向数据库文件的其他部分,每个数据库都有一个主要数据文件,扩展名为.mdf。

  • 次数据文件

包含除主数据库文件之外的所有数据文件,一个数据库可以没有次数据文件,也可以有多个次数据文件,扩展名为.ndf。

2、日志文件

日志文件中记录了存储数据库的更新情况等事务日志信息,用户对数据库进行的插入、删除和更新等操作都会记录在日志文件中。当数据库损坏时,可以根据日志文件来分析出错的原因,或者数据丢失时,还可以使用事务日志恢复数据库。每一个数据库至少必须拥有一个事务日志文件,而且允许拥有多个日志文件。

1.3 五大系统数据库

系统数据库 说明 是否需要备份 恢复模式 注释
master 记录实例所有系统级信息 简单 master库不可用时,实例无法正常启动
msdb agent的报警以及任务调度、操作记录、备份恢复历史记录 简单
model 其他所有数据库创建使用的模版 简单(默认) 建议设置为完整备份。model 库较小而且很少更改,无需备份日志。
resource 包含所有系统对象的只读数据库 - 隐藏数据库
tempdb 用于保存临时或中间结果集 简单 每次实例重启会重建tempdb

二、master数据库

2.1 基本信息

master数据库记录了SQL Server中所有系统级信息,主要包括:

  • 登录账户信息、链接服务器、系统配置设置等
  • 其他数据库的元信息(数据库所有文件位置信息等)
  • SQL Server初始化信息

master数据库的物理存储信息:

文件 逻辑名称 物理名称 文件增长
主数据 master master.mdf 以 10% 的速度自动增长到磁盘充满为止。
日志 mastlog mastlog.ldf 以 10% 的速度自动增长到最大 2 TB。

2.2 限制

不能在 master 数据库中执行下列操作:

  • 添加文件或文件组。
  • 更改排序规则。 默认排序规则为服务器排序规则。
  • 更改数据库所有者。 master 的所有者是 sa。
  • 创建全文目录或全文索引。
  • 在数据库的系统表上创建触发器。
  • 删除数据库。
  • 从数据库中删除 guest 用户。
  • 启用变更数据捕获。
  • 参与数据库镜像。
  • 删除主文件组、主数据文件或日志文件。
  • 重命名数据库或主文件组。
  • 将数据库设置为 OFFLINE。
  • 将数据库或主文件组设置为 READ_ONLY。

2.3 使用建议

  • 始终有一个 master 数据库的当前备份可用。

  • 执行下列操作后,尽快备份 master 数据库:

    创建、修改或删除任意数据库
    更改服务器或数据库的配置值
    修改或添加登录帐户

  • 不要在 master中创建用户对象。 否则,必须更频繁地备份 master 。

  • 不要针对 master 数据库将 TRUSTWORTHY 选项设置为 ON。

三、msdb数据库

3.1 基本信息

msdb数据库提供了运行SQL Server Agent工作的信息,主要包括一些告警以及日常计划任务调度的信息,如备份恢复的事件日志。

默认情况下msdb数据库使用的是恢复模式是简单模式,若需要使用备份恢复历史表,建议将该数据库的恢复模式设置为完整模式。需要注意的是,当SQL Server初始化安装/升级、或者重建时,msdb的恢复模式都会被默认设置为简单模式。

msdb数据库的物理存储信息:

文件 逻辑名称 物理名称 文件增长
主数据 MSDBData MSDBData.mdf 以 10% 的速度自动增长到磁盘充满为止。
日志 MSDBLog MSDBLog.ldf 以 10% 的速度自动增长到最大 2 TB。

3.2 限制

不能在 msdb 数据库中执行下列操作:

  • 更改排序规则。 默认排序规则为服务器排序规则。
  • 删除数据库。
  • 从数据库中删除 guest 用户。
  • 启用变更数据捕获。
  • 参与数据库镜像。
  • 删除主文件组、主数据文件或日志文件。
  • 重命名数据库或主文件组。
  • 将数据库设置为 OFFLINE。
  • 将主文件组设置为 READ_ONLY。

四、model数据库

4.1 基本信息

model数据库主要是所有数据库创建时使用的模版。当一个新数据库被创建时,SQL Server首先会复制model数据库的全部内容、包括数据库选项,后续该数据库下的操作继续填充剩余的空白页。

修改model数据库的配置会影响到整个实例的数据库创建。在SQL Server中model数据库时刻可能会被其他数据库使用,所以该数据库无法删除,必须永远存在。

model数据库的物理存储信息:

文件 逻辑名称 物理名称 文件增长
主数据 modeldev model.mdf 以 64 MB 的速度自动增长到磁盘充满为止。
日志 modellog modellog.ldf 以 64 MB 的速度自动增长到最大 2 TB。

4.2 限制

不能在 model 数据库中执行下列操作:

  • 添加文件或文件组。
  • 更改排序规则。 默认排序规则为服务器排序规则。
  • 更改数据库所有者。 模型 的所有者是 sa。
  • 删除数据库。
  • 从数据库中删除 guest 用户。
  • 启用变更数据捕获。
  • 参与数据库镜像。
  • 删除主文件组、主数据文件或日志文件。
  • 重命名数据库或主文件组。
  • 将数据库设置为 OFFLINE。
  • 将主文件组设置为 READ_ONLY。
  • 使用 WITH ENCRYPTION 选项创建过程、视图或触发器。 加密密钥与在其中创建对象的数据库绑定在一起。 在 model 数据库中创建的加密对象只能用于 model中。

五、resource数据库

5.1 基本信息

Resource库时一个隐藏库,它记录了SQL Server中的所有系统对象(如 sys.objects),这些信息实际的物理存储在resource库下,但是逻辑上会在每个数据库下sys的架构中显示。由于该数据库为只读库,无法存储一些用户信息(存储在master库中)。

resource库的版本升级比较简单,仅需要将对应版本的Resource 数据库文件复制到本地服务器便可完成升级。

5.2 resource库相关命令

1、查看resource库版本信息

SELECT SERVERPROPERTY('ResourceVersion');
GO

2、查看resource库上次升级时间

SELECT SERVERPROPERTY('ResourceLastUpdateDateTime');
GO

六、tempdb数据库

6.1 基本概念

tempdb数据库是一饿全局资源,可供连接到SQL Server数据库的所有用户使用,主要用于以下几方面:

  • 显式创建的临时用户对象

比如全局或者本地的临时表/索引、临时存储过程、表变量、表值函数中返回的表或游标。

  • 数据库引擎创建的内部对象

spool、游标、临时的大对象存储

hash join或者hash 聚合操作的临时文件

创建或者重建索引操作、group by、order by操作产生的内部排序结果,

  • 版本存储

RC隔离级级别、snapshot隔离级别下,由于数据变更产生的多版本数据记录

在线创建索引操作、 Multiple Active Result Sets (MARS)、 AFTER triggers操作产生的多版本数据记录

对于tempdb的所有操作也会被记录到日志中,以便事务回滚。每次实例重启会重建tempdb。对于每个会话线程,当会话链接断开时,会自动删除其持有的临时表、临时存储过程等。也正是由于这样的特性,tempdb数据库是不需要进行备份恢复操作的。

任何用户都可以在tempDB库中创建临时对象,且用户只能访问自己的对象,除非他们获得更多的权限。

model数据库的物理存储信息:

文件 逻辑名称 物理名称 初始大小 文件增长
主数据 tempdev tempdb.mdf 8 MB 以 64 MB 的速度自动增长直到磁盘已满
次要数据文件* temp# tempdb_mssql_#.ndf 8 MB 以 64 MB 的速度自动增长直到磁盘已满
日志 templog templog.ldf 8 MB 以 64 MB 的速度自动增长直到达到上限 2 TB

6.2 限制

不能对 TempDB 数据库执行以下操作:

  • 添加文件组
  • 备份或还原数据库
  • 更改排序规则。 默认排序规则为服务器排序规则
  • 更改数据库所有者。 TempDB 的所有者是 sa
  • 创建数据库快照
  • 删除数据库
  • 从数据库中删除 guest 用户
  • 启用变更数据捕获
  • 参与数据库镜像
  • 删除主文件组、主数据文件或日志文件
  • 重命名数据库或主文件组
  • 运行 DBCC CHECKALLOC
  • 运行 DBCC CHECKCATALOG
  • 将数据库设置为 OFFLINE
  • 将数据库或主文件组设置为 READ_ONLY

6.3 tempdb库库相关命令

1、检查当前tempdb库大小以及增长参数

1)tempdb数据库不可设置过小,若参数设置过小,每次实例启动时都会消耗额外的计算资源对tempdb进行扩展,直到满足当前所需大小

2)tempdb库的数据文件应该设置为自动增长,避免出现意外导致tempdb空间不足

3)tempdb的每个文件组的数据文件大小应保持一致,SQL Server使用比例填充算法,有效提高并行效率

4)将文件增量设置为合理的大小以避免 TempDB 数据库文件的增量过小。 如果文件的增量与写入tempDB的数据量相比过小,则tempDB可能需要不断扩大,并且会影响性能。

SELECT name AS FileName,size*1.0/128 AS FileSizeInMB,CASE max_sizeWHEN 0 THEN 'Autogrowth is off.'WHEN -1 THEN 'Autogrowth is on.'ELSE 'Log file grows to a maximum size of 2 TB.'END,growth AS 'GrowthValue','GrowthIncrement' =CASEWHEN growth = 0 THEN 'Size is fixed.'WHEN growth > 0 AND is_percent_growth = 0THEN 'Growth value is in 8-KB pages.'ELSE 'Growth value is a percentage.'END
FROM tempdb.sys.database_files;
GO

2、tempdb空间使用监控

1)tempdb空间使用情况监控

-- Determining the Amount of Free Space in TempDB
SELECT SUM(unallocated_extent_page_count) AS [free pages],(SUM(unallocated_extent_page_count)*1.0/128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;-- Determining the Amount Space Used by the Version Store
SELECT SUM(version_store_reserved_page_count) AS [version store pages used],(SUM(version_store_reserved_page_count)*1.0/128) AS [version store space in MB]
FROM sys.dm_db_file_space_usage;-- Determining the Amount of Space Used by Internal Objects
SELECT SUM(internal_object_reserved_page_count) AS [internal object pages used],(SUM(internal_object_reserved_page_count)*1.0/128) AS [internal object space in MB]
FROM sys.dm_db_file_space_usage;-- Determining the Amount of Space Used by User Objects
SELECT SUM(user_object_reserved_page_count) AS [user object pages used],(SUM(user_object_reserved_page_count)*1.0/128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;

2)监控当前会话或任务tempdb空间占用情况

-- Obtaining the space consumed by internal objects in all currently running tasks in each session
SELECT session_id,SUM(internal_objects_alloc_page_count) AS task_internal_objects_alloc_page_count,SUM(internal_objects_dealloc_page_count) AS task_internal_objects_dealloc_page_count
FROM sys.dm_db_task_space_usage
GROUP BY session_id;-- Obtaining the space consumed by internal objects in the current session for both running and completed tasks
SELECT R2.session_id,R1.internal_objects_alloc_page_count+ SUM(R2.internal_objects_alloc_page_count) AS session_internal_objects_alloc_page_count,R1.internal_objects_dealloc_page_count+ SUM(R2.internal_objects_dealloc_page_count) AS session_internal_objects_dealloc_page_count
FROM sys.dm_db_session_space_usage AS R1
INNER JOIN sys.dm_db_task_space_usage AS R2 ON R1.session_id = R2.session_id
GROUP BY R2.session_id, R1.internal_objects_alloc_page_count,R1.internal_objects_dealloc_page_count;;

文章参考:

 https://www.cnblogs.com/libingql/p/4078728.htmlhttps://docs.microsoft.com/zh-cn/sql/relational-databases/databases/system-databases?view=sql-server-ver15

SQL Server系统数据库介绍相关推荐

  1. SQL Server系统数据库– msdb数据库

    介绍 (Introduction) This article is the third I am writing about Microsoft SQL system databases. 本文是我正 ...

  2. SQL Server系统数据库–模型数据库

    介绍 (Introduction) This is my fourth article about SQL Server system databases. In previous articles ...

  3. SQL Server系统数据库–主数据库

    介绍 (Introduction) There are at least 4 system databases in any SQL Server instance as shown by the f ...

  4. Sql Server系统数据库的作用

    Sql Server系统数据库的作用 一.  系统数据库 Sql Server的系统数据库分为:master.model.msdb和tempdb,这四个数据库在SQL Server中各司其职,作为研发 ...

  5. tempdb SQL Server系统数据库的配置,操作和限制

    介绍 (Introduction) tempdb is one of the 4 system databases that exists in all SQL Server instances. T ...

  6. SQL Server:数据库介绍

    一.系统数据库 SQL Server 2008的安装程序在安装时默认将建立4个系统数据库.介绍如下: ►master数据库 任意SQL Server都有master数据库,而不管其实哪一版本或是自定义 ...

  7. sql server 系统表 介绍

    sysaltfiles  主数据库 保存数据库的文件 syscharsets  主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库当前配置选 ...

  8. SQL Server系统数据库损坏时的快速恢复使用

    1.假设data文件夹中master,masterlog,model,modellog,msdbdata,msdblog的系统数据库文件已损坏,复制Binn/template中的同名文件替换. 2.管 ...

  9. SQL Server 系统表介绍:sys.dm_exec_sessions

    针对 SQL Server 上的每个经过身份验证的会话返回一行.sys.dm_exec_sessions 是服务器范围的视图,显示了有关所有活动用户连接和内部任务的信息.此信息包含客户端版本.客户端程 ...

最新文章

  1. MySQL · 性能优化· CloudDBA SQL优化建议之统计信息获取
  2. 派生类的拷贝构造【C++继承】
  3. Docker容器(配置+镜像建立及优化+镜像加速器制作)
  4. idea配置tomcat必坑指南
  5. 关于 Nuxt 集成ueditor的一些坑(包括图片上传)前端部分
  6. Iphone代码创建视图
  7. 腾讯视频app下载2019_腾讯视频主设备如何设置
  8. Android-传感器开发
  9. MCU新趋势—Cortex M0/M3/M4 行业应用主题研讨会
  10. python中的匿名函数_Python匿名函数详解
  11. 圣诞老人python代码_用Python画圣诞老人的N种方法
  12. (34.1)【登录越权/爆破专题】原理、字典资源、工具、利用过程……
  13. 《中国近代史纲要》思维导图复习版
  14. 朝闻道,夕死可矣。究竟闻的是什么道?
  15. 西湖论剑 web 5 easyjson
  16. /usr/bin/ld: 找不到 -lstdc++
  17. DFM文件以及写该文章的原因等等
  18. Hive自定义函数(字母大小写转换)
  19. SQL行转列,列转行
  20. android基于ffmpeg本地视频、在线视频、直播播放器 支持rtmp、rtsp、http等协议

热门文章

  1. 淘宝运营 动销率 售罄率两者区别 以及优化方案
  2. 数据库系统入门 | Oracle 11g中执行Execute的时候报异常ORA-01031的解决办法
  3. UART接口的FPGA实现(二)——UART接口的Verilog代码实现以及仿真测试
  4. TCPIP网络编程第一章踩坑过程 bind() error connect() error
  5. 计算机学院毕业条幅,大学毕业季聚餐条幅标语
  6. Python 实现矩阵分解
  7. 医院信息化建设服务器机房维护,医院标准化信息中心机房建设心得.docx
  8. 传智健康产品需求说明书
  9. SIM卡ICCID的编码方案
  10. 大数据和云计算技术周报(第95期)