SQLServer的系统数据库

 首先要明确SQLServer的系统数据库一共有5个:Master、Model、Msdb、Tempdb、Resource。

1、Master数据库

  (1)master数据库记录了所有系统级别的信息,包括元数据(登录账户)、端点、链接服务器和系统的配置设置。需要注意的是系统对象不在master库中,而在resource库中;

  (2)mater数据库还记录了所有其他数据库的存在、数据库的文件的位置;

  (3)master数据库不可用,则SQLServer实例就无法启动;

  (4)不能给master数据库添加文件或文件组,不能更改master数据库的排序规则,默认是实例的排序规则;

  (5)不能删除master数据库,不能删除guest用户;

  (6)不能创建触发器,不能启动CDC(数据变更捕获),不能参与数据库镜像,不能设置为只读,不能设置为OFFLINE(脱机);

2、Model数据库

  (1)model数据库是一个模板数据库,在create database时,将通过复制model数据库中的内容来创建数据库的部分,然后用空页填充新数据库的剩余部分;

  (2)model数据库必须存在,model数据库的全部内容都会被复制到新数据库中,例如设置的权限、数据库选项、表、函数、存储过程等等;

  (3)model数据库的数据和日志文件默认初始大小为8MB;

  (4)每次系统重启创建的tempdb数据库的模板都来自于model;

3、Msdb数据库

  (1)msdb用来保存SQLServer代理作业和执行计划的配置信息;

  (2)默认情况下msdb使用简单模式;

4、Tempdb数据库

  (1)tempdb数据库保存系统运行过程中产生的临时表、存储过程、全局或局部临时表及索引、表变量等等;

  (2)tempdb数据库是一个全局资源,任何连接到系统的用户都可以在该数据库中产生临时表和存储过程;

  (3)每次重启SQLServer的时候。都会清空该数据库中的内容,所以每次系统重启后,tempdb总是一个干净的数据库副本(模板来自model数据库);

  (4)tempdb中的操作是小日志记录操作,以便回滚事务;

  (5)不允许对tempdb数据库做备份还原操作;

  (6)tempdb数据库的大小和物理位置可能影响系统的性能。例如定义的tempdb大小过小,那么每次重启SQLServer实例时,都可能会占用部分系统处理负载,让tempdb自动增长到工作所需的大小(如果正常工作需要的tempdb的大小比较大的话);

  (7)每个文件组中的数据文件大小应一致,SQLServer可以使用比例填充算法增加可用空间,进行文件分配,将tempdb将分割成大小相等的多个数据文件,这样可以为使用tempdb的操作提供更高的并行效率;

  (8)SQLServer2016开始,对tempdb的性能进行了优化,具体如下:

    * 临时表和表变量可以缓存。缓存允许删除和创建临时对象的操作非常快速的执行,减少了物理上页分配的争用问题;

    * 改进了分配页闩锁协议,减少了所用UP(更新)闩锁的数量;

    * 减少了tempdb的日志记录开销,从而减少了tempdb日志文件的磁盘I/O带宽消耗;

    * 新安装的SQL实例,tempdb会添加多个tempdb数据文件;

  (9)查看当前tempdb的大小和增长参数

  命令: