SQL Server系统数据库介绍
文章目录
- 一、基本介绍
- 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系统数据库介绍相关推荐
- SQL Server系统数据库– msdb数据库
介绍 (Introduction) This article is the third I am writing about Microsoft SQL system databases. 本文是我正 ...
- SQL Server系统数据库–模型数据库
介绍 (Introduction) This is my fourth article about SQL Server system databases. In previous articles ...
- SQL Server系统数据库–主数据库
介绍 (Introduction) There are at least 4 system databases in any SQL Server instance as shown by the f ...
- Sql Server系统数据库的作用
Sql Server系统数据库的作用 一. 系统数据库 Sql Server的系统数据库分为:master.model.msdb和tempdb,这四个数据库在SQL Server中各司其职,作为研发 ...
- tempdb SQL Server系统数据库的配置,操作和限制
介绍 (Introduction) tempdb is one of the 4 system databases that exists in all SQL Server instances. T ...
- SQL Server:数据库介绍
一.系统数据库 SQL Server 2008的安装程序在安装时默认将建立4个系统数据库.介绍如下: ►master数据库 任意SQL Server都有master数据库,而不管其实哪一版本或是自定义 ...
- sql server 系统表 介绍
sysaltfiles 主数据库 保存数据库的文件 syscharsets 主数据库字符集与排序顺序 sysconfigures 主数据库 配置选项 syscurconfigs 主数据库当前配置选 ...
- SQL Server系统数据库损坏时的快速恢复使用
1.假设data文件夹中master,masterlog,model,modellog,msdbdata,msdblog的系统数据库文件已损坏,复制Binn/template中的同名文件替换. 2.管 ...
- SQL Server 系统表介绍:sys.dm_exec_sessions
针对 SQL Server 上的每个经过身份验证的会话返回一行.sys.dm_exec_sessions 是服务器范围的视图,显示了有关所有活动用户连接和内部任务的信息.此信息包含客户端版本.客户端程 ...
最新文章
- MySQL · 性能优化· CloudDBA SQL优化建议之统计信息获取
- 派生类的拷贝构造【C++继承】
- Docker容器(配置+镜像建立及优化+镜像加速器制作)
- idea配置tomcat必坑指南
- 关于 Nuxt 集成ueditor的一些坑(包括图片上传)前端部分
- Iphone代码创建视图
- 腾讯视频app下载2019_腾讯视频主设备如何设置
- Android-传感器开发
- MCU新趋势—Cortex M0/M3/M4 行业应用主题研讨会
- python中的匿名函数_Python匿名函数详解
- 圣诞老人python代码_用Python画圣诞老人的N种方法
- (34.1)【登录越权/爆破专题】原理、字典资源、工具、利用过程……
- 《中国近代史纲要》思维导图复习版
- 朝闻道,夕死可矣。究竟闻的是什么道?
- 西湖论剑 web 5 easyjson
- /usr/bin/ld: 找不到 -lstdc++
- DFM文件以及写该文章的原因等等
- Hive自定义函数(字母大小写转换)
- SQL行转列,列转行
- android基于ffmpeg本地视频、在线视频、直播播放器 支持rtmp、rtsp、http等协议
热门文章
- 淘宝运营 动销率 售罄率两者区别 以及优化方案
- 数据库系统入门 | Oracle 11g中执行Execute的时候报异常ORA-01031的解决办法
- UART接口的FPGA实现(二)——UART接口的Verilog代码实现以及仿真测试
- TCPIP网络编程第一章踩坑过程 bind() error connect() error
- 计算机学院毕业条幅,大学毕业季聚餐条幅标语
- Python 实现矩阵分解
- 医院信息化建设服务器机房维护,医院标准化信息中心机房建设心得.docx
- 传智健康产品需求说明书
- SIM卡ICCID的编码方案
- 大数据和云计算技术周报(第95期)