SQL Server ->> Sparse File(稀疏文件)
Sparse File(稀疏文件)不是SQL Server的特性。它属于Windows的NTFS文件系统的一个特性。如果某个大文件中的数据包含着大量“0数据”(这个应该从二进制上看),这样的文件就可以被称之为稀疏文件。如果从二维图上看这个文件你会发现文件就像很多很多洞一样,这就是“稀疏”的由来。这种文件造成的问题是空间浪费。比如说如果你现在用VMWare Workstatation创建了一个虚拟机,初始化磁盘大小为40G,VM必然会为虚拟机生成一个或者多个.vmdk文件。如果文件系统真的分配40G的物理磁盘空间给虚拟机磁盘文件,实际上是很大的浪费,因为它根本没用到这么多。那解决办法有几种。第一种是在分配整个完整大小的空间,然后把没有用到的空间都写0,然后用NTFS的压缩技术压缩文件大小。这种做法虽然算是解决了空间浪费的问题,但是是有代价的,文件从缓存写入磁盘前的压缩过程和文件解压缩的过程是有代价的,对于一个文件操作繁忙的系统或应用程序而言如此频繁的压缩和解压缩操作是很大代价的。
NTFS中处理这种文件的做法是只在文件的内容区域块不是大量的0数据才分配空间。当缓存中的文件内容在写入磁盘前被检出出存在大量区块的0数据,NTFS不会把这部分数据也写入磁盘,而是自己维护着一份列表,记录下0数据的位置。这样当读取文件操作发生并且读取到0数据时,NTFS再为读取操作写入0数据到缓冲区。
那我们再谈回来稀疏文件和SQL Server有什么关系?SQL Server会在NTFS系统生成很多类型的文件,而当中的Database Snapshots和DBCC CHECKDB命令产生的文件就是稀疏文件。DBCC CHECKDB命令在运行过程中所产生的数据都是存储在数据库内部快照(Database Internal Snapshots)里面的。
这里我试下创建一个数据库快照然后来观察下快照文件所占用磁盘空间的大小
CREATE DATABASE Test_Jerry_SS
ON
( NAME =Test_2, FILENAME ='H:\Database Data Files\Test_Jerry_SS_01.ss'),
( NAME =test1dat3, FILENAME ='H:\Database Data Files\Test_Jerry_SS_02.ss'),
( NAME =test1dat4, FILENAME ='H:\Database Data Files\Test_Jerry_SS_03.ss'),
( NAME =test1dat5, FILENAME ='H:\Database Data Files\Test_Jerry_SS_04.ss')
AS SNAPSHOT OF [Test_Jerry]
GO
实际大小仅为128KB

参考文献:
Sparse Files
NTFS Sparse Files For Programmers
What are Sparse Files and Why Should I Care as SQL Server DBA?
SQL Server ->> Sparse File(稀疏文件)的更多相关文章
- SQL Server通过File Header Page来进行Crash Recovery
SQL Server通过File Header Page来进行Crash Recovery 看了盖总的一篇文章 http://www.eygle.com/archives/2008/11/oracle ...
- 关于SQL Server中分区表的文件与文件组的删除(转)
在SQL Server中对表进行分区管理时,必定涉及到文件与文件组,关于文件与文件组如何创建在网上资料很多,我博客里也有两篇相关转载文件,可以看看,我这就不再细述,这里主要讲几个一般网上很少讲到的东西 ...
- SQL Server 无法打开物理文件的 2 种解决办法
解决方法: 方法1.无法打开可以能是没有权限.如果是这样以管理员身份运行Managerment Studio就可以了. 方法2.找到指定的数据库文件.右键属性-->安全-->勾上 ‘完全 ...
- SQL SERVER数据库删除LOG文件和清空日志的方案
原文:SQL SERVER数据库删除LOG文件和清空日志的方案 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间.SQL Server数据库都有log文件,log文 ...
- sql server迁移数据(文件组之间的互相迁移与 文件组内文件的互相迁移)
转自:https://www.cnblogs.com/lyhabc/p/3504380.html?utm_source=tuicool SQLSERVER将数据移到另一个文件组之后清空文件组并删除文件 ...
- SQL Server无法收缩日志文件 2 因为逻辑日志文件的总数不能少于 2问题
SQL Server无法收缩日志文件 2 因为逻辑日志文件的总数不能少于 2问题 最近服务器执行收缩日志文件大小的job老是报错 我所用的一个批量收缩日志脚本 USE [master] GO /*** ...
- sql server 2000,Log.LDF文件丢失,附加数据库失败的解决办法[转]
SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式.下面将主要讨论一下后者的备份与恢复. ...
- SQL SERVER 查看mdf ldf文件路径
SQL SERVER 查看mdf ldf文件路径 select filename from sysfiles
- SQL Server数据库状态和文件状态
数据库状态 (database states) 查询数据库的当前状态 : 1.查询所有数据库的状态 ,通过sys.databases目录视图的state_desc列 user master go se ...
随机推荐
- nginx应用
windows: 启动:start nginx 退出:nginx -s quit 检查配置是否正确:nginx -t -c ./conf/nginx.conf 查看是否在运行:tasklist /fi ...
- 安卓与windows
windows phone 还是PC啊?windows PC的话,应该就是你现在用的电脑系统吧,PC系统和安卓是不一样的,安卓是移动设备系统,基于的构架也不同,意思就是电脑上装不上安卓,移动设备也装不 ...
- 【OpenCV-Python】-图像平滑
原文为段立辉翻译,感谢Linux公社www.linuxidc.com此文档为自学转述,如有侵权请联系本人. 目标: • 学习使用不同的低通滤波器对图像进行模糊 • 使用自定义的滤波器对图像进行卷积(2 ...
- selenium+Python(文件下载)
webdriver允许我们设置默认的文件下载路径,也就是说,文件会自动下载并保存到设置的目录中 下面以Firefox浏览器为例: from selenium import webdriver from ...
- eclipse中点不出方法的解决办法
window-preferences-java-editor-Content Assist-Advanced 然后选中右上方的所有 右下方选中一个即可.
- 【Docker】Docker是什么?怎么安装?怎么用?
从今天开始学习Docker,通过对网上资料的搜集与学习,记录一下. 是什么 ? Docker是一个基于LXC实现的类似于VMs的超轻量级虚拟机. 它与VMs的区别在于,VMs提供的是一个完整的操作系 ...
- java并发编程(3)避免活跃性危险
活跃性危险 一.死锁 发生:每个人都不愿意放弃自己的锁,确想要别人的锁,这就会导致死锁 1.锁顺序死锁:如果每个线程以固定的顺序获取锁,那么至少在程序中不会出现锁顺序导致的死锁: 因为顺序固定如:所 ...
- Oracle ORA-27102的解决办法(out of memory)
原文出自:https://blog.csdn.net/seesun2012 Oracle ORA-27102:out of memory 错误解决办法(简单粗暴,100%能解决内存占用问题) -前置: ...
- (原创).Net将EF运用于Oralce一 准备工作
网上有很多EF运用于Oracle的博文,但是找了半天发现大多数博文大都语焉不详,于是决定自己折腾. 首先我的开发工具为vs2010,那么最适用于VS2010的EF版本为多少呢?答案是EF5.我在Sta ...
- webservice log4net日志写入失败
原因1:如果webservice和调用者都部署在一台机器上,日志有可能写到了项目所在目录中,虽然你添加的服务引用是部署在iis下的,但不会写到这.暂时解决办法,把webservice部署到内网服务器上 ...