博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
菜鸟学SQLServer--数据文件和日志文件
阅读量:6292 次
发布时间:2019-06-22

本文共 1496 字,大约阅读时间需要 4 分钟。

昨天讲到的是 页和区, 今天就想写一些 数据文件和日志文件那些事。

根据MSDN library [1],SQL Server有三种类型的文件,分别是:

  • 主数据文件 -- 后缀为 .mdf
  • 次要数据文件 -- 后缀为 .ndf
  • 日志文件 -- 后缀为.ldf

 

数据文件:

从示例数据库我们可以看到,里面有一个主数据文件和一个日志文件,次要数据文件不是必须的。

同时每个文件都有一个文件号,fileID or filenum,用来标识该文件。

比如上一篇文章的DBCC page 命令,唯一标识数据库中的一页,需要  数据库名称或者dbid +  文件号filenum  +  页号pagenum

dbcc page ( {
'dbname' | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])

 

#命名

每个文件都有两个名称,分别是 逻辑名称(logical_file_name) 及 路径和文件名组成的物理文件名(os_file_name).

前者必须唯一,后者必须符合操作系统的命名规则。

 

#文件组

对于文件我们还能按文件组来管理,从主文件组的文件数 1 可以看出,文件组是不包含日志文件的。

另外我们还可以添加自定义的文件组。

使用文件组能够帮助数据布局和管理任务,比如备份和还原

 

#文件增长

SQLServer 支持用户设置数据库初始值、最大值。

对于数据文件,把不同的文件放在不同的硬盘加快读写。

但需要注意的是对于新数据,SQLServer是按同一文件组中所有文件现有空闲空间的大小比例来分配新数据写入的文件。

比如两个文件空闲空间分别为 2GB和1GB,那么新数据将按 2:1的比例分别写入两个文件。

日志文件则不一样,由于日志文件是严格按顺序写入(估计是为了确保数据库的完整性和方便数据恢复),所以多个日志文件没法提高并发性能也就没有按比例写入一说。

在《Microsoft SQL Server企业级平台管理实践》一书中有如下建议:

  1. 要设置成按固定大小增长,而不能按比例。这样就能避免一次增长太多或者太少所带来的不必要的麻烦。建议对比较小的数据库,设置一次增长50 MB到100 MB。对大的数据库,设置一次增长100 MB到200 MB。
  2. 要定期监测各个数据文件的使用情况,尽量保证每个文件剩余的空间一样大,或者是期望的比例。
  3. 设置文件最大值,以免SQL Server文件自增长用尽磁盘空间,影响操作系统。
  4. 发生自增长后,要及时检查新的数据文件空间分配情况。避免SQL Server总是往个别文件写数据。

 

日志文件:

#VLF(虚拟日志文件)

一个日志文件被划分成多个虚拟日志文件。

而虚拟虚拟日志文件的个数和大小是管理员不能设置的,而是由创建或扩展日志文件时由数据库引擎动态决定。

那么问题来了,为什么要使用虚拟日志文件? 这里留下一个疑问

 

#日志文件是一种回绕文件

当日志记录到末端

附上MSDN的图

 

 

 

和数据文件一样,日志文件可以有多个。如果日志包含多个物理日志文件,则逻辑日志在回绕到首个物理日志文件始端之前,将沿着所有物理日志文件移动。

由此看来,把多个日志文件放在不同的硬盘并不能提高I/O 并发。因为它始终是线性记录。而且由于它是顺序记录,写入位置确定所以效率 较写入数据高,因为不用像数据页那样分布在硬盘的不同位置。

 

 

参考:

[1]

[2]

《Microsoft SQL Server企业级平台管理实践》

转载于:https://www.cnblogs.com/bournexian/p/4385743.html

你可能感兴趣的文章
26.Azure备份服务器(下)
查看>>
mybatis学习
查看>>
LCD的接口类型详解
查看>>
Spring Boot Unregistering JMX-exposed beans on shutdown
查看>>
poi 导入导出的api说明(大全)
查看>>
Mono for Android 优势与劣势
查看>>
将图片转成base64字符串并在JSP页面显示的Java代码
查看>>
js 面试题
查看>>
sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
查看>>
腾讯云下安装 nodejs + 实现 Nginx 反向代理
查看>>
Javascript 中的 Array 操作
查看>>
java中包容易出现的错误及权限问题
查看>>
AngularJS之初级Route【一】(六)
查看>>
服务器硬件问题整理的一点总结
查看>>
SAP S/4HANA Cloud: Revolutionizing the Next Generation of Cloud ERP
查看>>
Mellanox公司计划利用系统芯片提升存储产品速度
查看>>
白帽子守护网络安全,高薪酬成大学生就业首选!
查看>>
ARM想将芯片装进人类大脑 降低能耗是一大挑战
查看>>
Oracle数据库的备份方法
查看>>
Selenium 自动登录考勤系统
查看>>