教你用压缩技术给SQL Server备份文件瘦身
作者:IT专家网 来源:IT专家网 发布时间:2009-03-05 14:59:00
众所周知,随着数据库体积的日益庞大,其备份文件的大小也水涨船高。虽然说通过差异备份与完全备份配套策略,可以大大的减小SQL Server数据库备份文件的容量。可是,其体积仍然很庞大。所以,在日常工作中,如何给SQL Server的备份文件瘦身,就是很多数据库管理员所关心的问题了。
也许微软的数据库产品设计专家听到了众多数据库管理员的呼声了吧。在最新的2008版本的SQLServer数据库中,提出了备份压缩的概念。其基本原理跟利用RAR等压缩工具压缩文件一样,可以让原有的备份文件体积更小。这直接带来的好处,就是可以节省服务器的备份空间。另外,若SQLServer数据库配置了异地备份的话,那么也可以节省网络带宽,缩短异地备份的时间,等等。
笔者前不久刚把数据库升级到了2008,并重新更改了备份配置,让数据库支持备份压缩。下面笔者就把备份压缩的管理心得跟大家分享一下。希望笔者这些经验能够帮助大家做好SQL Server数据库备份压缩的管理。简单的来说,如果要采用备份压缩技术,那么数据库管理员要弄明白几个问题。
问题一:备份压缩技术的限制条件。
由于备份压缩技术是2008版本中才提出来的,所以其兼容性可能就会收到一些限制。根据官方的说法是,从2008以后的数据库版本,都会支持这个备份压缩技术。故向后兼容应该问题不大。数据库管理员关心的应该是,从低版本升级到高版本的数据库时的一些限制条件。掌握这些限制条件,可能会让数据库升级少遇到一些问题。根据笔者的了解,这里至少有二个限制条件。
一是压缩的备份和未压缩的备份不能够共存于一个媒体集中。在SQL Server数据库中,如果要对数据集进行备份,则首先需要建立一个媒体集。笔者升级完成之后,先对数据库进行了一个完全备份,这个备份没有采用压缩技术。后来笔者在测试压缩备份的时候,却发现怎么都不成功。后来根据错误提示查询了相关资料并进行亲自测试,才发现压缩的备份和未压缩的备份不能够共存于一个媒体集中。笔者后来重新建立了一个媒体集后,备份压缩技术就可以起作用了。
二是早期版本的SQL Server数据库无法读取压缩的备份。为了测试备份压缩技术的向前兼容性,笔者特意利用备份压缩后的数据库文件,去恢复2005版本的数据库。注意,这个数据库文件是升级到2008后马上备份的,也就是说,除了这个压缩技术外,没有采用2008的新技术与新对象。但是,却发现2005版本的数据库根本不认账,不认识这个压缩后的备份文件。可见,早期版本的SQL Server数据根本无法读取压缩后的备份文件。
这是笔者测试后发现的两个限制条件。不过笔者查询了一些官方资料后发现,还有一个重要的限制。如NTBACKUP工具无法共享含压缩的数据库备份磁带。不过由于笔者用不到这方面的内容,所以也没有测试是否如此。
问题二:压缩的效果到底如何?
如果采用了压缩备份技术,那么备份文件到底可以瘦下来多少呢?这主要跟数据库有关。根据笔者的了解,如下一些因素会直接影响到最终的压缩效果。
首先是跟数据类型有关。如果数据库中大部分是字符型的数据,则其压缩效果会比较好。而如果数字类型比较多的话,那么采用压缩备份技术后,备份文件并不能够小多少。这也给数据库管理元是否要采用压缩备份技术提供了一个判断的标准。
其次是数据是否加密。正常情况下,如果数据库中的数据未加密,则其压缩的效果会比较明显。相反如果数据库的数据加密了,则其压缩的程度就会小很多。如数据库管理员利用透明数据加密方法来加密整个数据库,则采用压缩备份技术之后,压缩备份并不会将数据库减小多少,甚至根本不会减小。
再者,跟数据表设计也有关系。一般情况下,如果表设计比较合理,则其压缩的效果就会好许多。如某页中包含多个行,而其中的某个字段包含相同的值,则该值就可以获得比较大的压缩率。与之相反,如果字段中的数据大部分是随机数据(即使只有稍微的差别),则其压缩备份的大小几乎与未压缩的备份相同。这也就是说,要想取得比较好的压缩效果,则在数据库设计时,就需要考虑。如可以采用一些列表字段供用户选择,就可以提高最终备份文件的压缩效果。
问题三:压缩备份对于性能的影响如何?
数据库采用压缩备份之后,对于数据库的影响是双方面的,即有利也有害。
利是直接跟上面所说的数据库压缩效果相关。因为同一个数据库的压缩备份文件要比原来的备份文件要小,所以压缩备份所需要的设备输入输出通常比较少,所以可以大大提高备份速度。而且,数据库进行异地备份的话,还可以大大缩短网路传输的时间。所以,当数据库的压缩效果越好,则对于数据库的性能,也会有很大的改善。
猜你喜欢
- Go 语言相比Java等一个很大的优势就是可以方便地编写并发程序。Go 语言内置了 goroutine 机制,使用goroutine可以快速
- 自动扫雷一般分为两种,一种是读取内存数据,而另一种是通过分析图片获得数据,并通过模拟鼠标操作,这里我用的是第二种方式。一、准备工作1.扫雷游
- 皇城PKPython中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢?自从Python2.6引入了format这个格式化字
- 当你安装 MySQL 完后、会有个提示:[root@localhost Desktop]# rpm -ivh MySQL-server-5.
- Django的ORM是非常好用的,哪怕不是做Web项目也值得一用,所以网上也可以找到不少使用 Django 开发非Web项目的资料,因为除了
- 1、首先在本机安装ssh在cmd输入ssh,出现下面信息代表安装成功2、vscode安装 Remote - SSH 插件3、连接远程主机vs
- 1.快捷键 ctrl(cmd) + shift + A或者Help—>Find Action2.输入Registry,输完记得回车3.
- 本文实例为大家分享了python实现登录与注册系统的具体代码,供大家参考,具体内容如下实现功能1.调用文本文件里的用户信息2.可以将注册信息
- 防止Application对象在多线程访问中出现错误asp代码处理代码如下(VB):<%Application.Lock()Appli
- 本文实例讲述了python读取json文件并将数据插入到mongodb的方法。分享给大家供大家参考。具体实现方法如下:#coding=utf
- 在网页中放iframe,如果frameborder=0;就没有边框显示了;但动态创建时,在IE7中就不行了,从网上找到解决的办法,写出来记录
- 这篇文章主要介绍了Oracle数据库到SQL Server数据库主键的迁移过程,具体内容请参考下文。由于项目需要要将以前Oracle的数据库
- 最近论坛里总有人问幻灯片怎么从数据库里取数据,花了几分钟简单的写了下。用到的人可以自己在细化<%dim rs,sqlset&
- 实例如下:from win32com.client import Dispatch import win32com.client
- 前言:图像滤波是图像处理和计算机视觉中最常用、最基本的操作。主要是去除图像中的噪声,因为图像平滑处理过程中往往会使得图像变的模糊,因此又叫模
- 前言众所周知,Dataset和Dataloder是pytorch中进行数据载入的部件。必须将数据载入后,再进行深度学习模型的训练。在pyto
- 之前服务器上配置测试用的服务环境,我偷懒顺手用网上现成的脚本进行安装,结果MySQL启动不了,于是我只有老老实实的重新安装MySQL Ser
- 今天学习Vue中遇到了一个报错信息:$index is not defined,是我写了个for循环在HTML中,然后是因为版本的问题下面是
- django中,很多时候我们都需要有一个地方来进行更加详细的权限控制,例如说哪些用户可以访问哪些页面,检查登录状态等,这里的话就涉及到了中间
- 本文实例分析了python多线程用法。分享给大家供大家参考。具体如下:今天在学习尝试学习python多线程的时候,突然发现自己一直对supe