数据库压缩备份提高备份效率

数据库压缩备份提高备份效率

背景

    在数据库的备份过程中有很多参数,前几日发现公司的备份数据库job运行的很慢,就去研究了一下,发现在备份程序中都没有启用压缩,加上压缩以后有发现效率提高了不少,本篇就几个压缩相关的参数来看一下备份数据库的过程中如何提高备份的效率。

代码实现

    为了更好地了解数据库备份,我们首先要知道代码以及参数的含义。

普通代码:

BACKUP DATABASE ‘备份数据库名称’ 
TO DISK = '地址+bak文件名称' ;

 

加快备份进度的几个关键参数:

1.BUFFERCOUNT–指定用于备份操作的 I/O 缓冲区总数。可以指定任何正整数

2.MAXTRANSFERSIZE–指定要在 SQL Server 和备份介质之间使用的最大传输单位。可能的值是 64 KB的倍数,最大 4 MB。

3.COMPRESSION–压缩备份选项。

4.CHECKSUM–验证数据选项。

5.启用多个备份集。

这四个中CHECKSUM是用来保证数据安全的这里我们不做讨论,由于一般备份也不会用到多个备份集,这里我们主要讨论前三个带来的影响,当然对于数据量级比较大的可以采用多备份集,尤其不同磁盘的备份集将会大大提高效率。

具体对比:

首先是常规没有压缩的情况下的备份如图1:

 

image

图1

数据页数282295,总共花费了32.147秒。接下来我们看一下当加了压缩等参数后的表现。

增加压缩参数的情况如图2:

image

图2

页数接近,花费的时间是19.524秒,单位备份速度大幅提升到112.957/s。

添加了COMPRESSION、MAXTRANSFERSIZE、BUFFERCOUNT三个参数的:

image

图3

这个就快了不少,花费了17.6秒,写入速度为125.228M/s。

适当缩小MAXTRANSFERSIZE、BUFFERCOUNT,如图4:

image

图4

如图所示,缩小MAXTRANSFERSIZE、BUFFERCOUNT后相应的写入速度略微下降。时间也略微提高。

大幅提升BUFFERCOUNT的数值,能够提升写入速度。

image

图5

缓冲区使用的总计空间由下面公式确定:buffercount*maxtransfersize,这里需要知道该公式结果不能大于分配内存,所以要注意服务器的最大内存以免内存溢出。

除了以上几个条件,我也做了几个相关的其他条件的修改来适应不同的备份数据,例如数据验证CHECKSUM等都会增大备份数据的时间。

注意:

1> 通过压缩前后文件的大小对比可知道到压缩比率。

2> 对已启用压缩的数据库进行压缩备份,CPU消耗会变得更高

压缩主要因素包括:

1.数据类型。字符数据的压缩率要高于其他类型的数据。

2.数据重复的比例越高压缩越好,类似于数据库压缩(页压缩)。

通常,如果某页包含多个行,而其中的某个字段包含相同的值,则该值可获得较大的压缩。相反,对于包含随机数据或者每页只有一个很大的行的数据库,压缩备份的大小几乎与未压缩的备份相同。

 

总结:

    不难发现,以上主要测试三个数据,在合理外围内越大越能提高效率。同时经过研究还发现,备份压缩后,还原的效率也会提高。

COMPRESSION、MAXTRANSFERSIZE、BUFFERCOUNT配合服务器的性能就能大幅提高备份效率。优点是显而易见的对于备份时间,备份文件大小都有提高。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119714.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • redis可视化工具下载_redis集群管理工具

    redis可视化工具下载_redis集群管理工具[i]首页我先把redis的密码设置为:123456redis127.0.0.1:6379>CONFIGSETrequirepass123456OKredis127.0.0.1:6379>AUTH123456Ok[/i][i]该可视化工具github地址[url]https://github.com/caoxinyu/RedisClient[/url][/i…

    2022年10月11日
    6
  • vue devtools如何使用调试_千牛提示opendevtools

    vue devtools如何使用调试_千牛提示opendevtoolsWriteByMonkeyfly以下内容均为原创,如需转载请注明出处。前提今天准备开始学vue.js了,不为别的,只是因为我女朋友毕设项目的前端是使用vue开发的,而我作为一个前端开发却无能为力,你说可不可笑。她需要一个会vue的前端帮她做界面,而我虽然身为一个前端开发,但是并不会vue,所以作为男朋友的我本身就很自责。现阶段的情况是:我只是知道有这些框架,再加上公司的项…

    2022年10月6日
    5
  • LM 算法_lm算法效果

    LM 算法_lm算法效果levmar :Levenberg-MarquardtnonlinearleastsquaresalgorithmsinC/C++  具体的代码请下载:http://users.ics.forth.gr/~lourakis/levmar/

    2022年10月1日
    3
  • HQL 多表联合查询「建议收藏」

    HQL 多表联合查询「建议收藏」HQL联表查询语句select h from Hytxbz as h,Tgbzk as t where h.hytxbzid=t.hytxbzid and t.bztgid=:bztgid如果想取得对应属性的话,也可以这样写 select h.hytxbzid from Hytxbz as h,Tgbzk as t where h.hytxbzid=t.hytxbzid 

    2022年5月10日
    35
  • Java中的随机数「建议收藏」

    Java中的随机数「建议收藏」Java产生可以随机数的有两个类,一个是Random类,另一个是Math类中的random()方法。1.Random类在java.util包中有一个Random类,该对象的几个方法可以生成不同数据类型的随机数。如nextInt(),nextFloat(),nextLong(),nextBoolean()分别生成的是int整形,float浮点型,double浮点型,boolean布尔类型的随机数,也必须要用制定的数据类型的变量接收。例如:输出五个随机…

    2022年7月9日
    25
  • ubuntu常用软件包deb的安装与卸载

    ubuntu常用软件包deb的安装与卸载【更详细得教程,以及获取软件包,关注公众号木石说:mushiwords。回复‘ubuntu’关键字即可免积分免费获取Ubuntu下软件包列表】。Ubuntu下的软件管理主要使用的是apt-get(现在广泛使用的是apt)以及dpkg两个管理工具,apt可以说是apt-get的升级版本,Ubuntu16.04发布时,一个引人注目的新特性便是apt命令的引入,之后越来…

    2022年5月18日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号