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

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

背景

    在数据库的备份过程中有很多参数,前几日发现公司的备份数据库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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • intellij idea输出语句快捷键_常用快捷键大全图片

    intellij idea输出语句快捷键_常用快捷键大全图片其他的快捷键还有很多,象Ctrl+G(跳转到指定行)、Ctrl+F4(关闭当前编辑页面)、Ctrl+F(搜索)等等,这些快捷键由于是各个编辑器都会提供的,而且定义的键位也都差不多,就没什么可说的了;Alt+回车导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O优化导入的类和包Alt+Ins

    2022年8月28日
    4
  • 部署Azure Pack 前期准备

    部署Azure Pack 前期准备

    2022年2月21日
    36
  • Solr集成Tomcat

    Solr集成Tomcat

    2021年5月30日
    102
  • 破14亿,Python分析我国存在哪些人口危机!「建议收藏」

    破14亿,Python分析我国存在哪些人口危机!「建议收藏」一、背景二、爬取数据三、数据分析1、总人口2、男女人口比例3、人口城镇化4、人口增长率5、人口老化(抚养比)6、各省人口7、世界人口四、遇到的问题遇到的问题1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST702、2019年数据没有放上去,可以手动添加上去3、将数据进行行列转换4、列名…

    2022年5月13日
    32
  • String转JSONArray,遍历JSONArray,Array数组转换成JSON字符串

    String转JSONArray,遍历JSONArray,Array数组转换成JSON字符串String转JSONArray, /** *String转JSONArray */ publicstaticvoidtest1(){ Stringjson="[{\"name\":\"张三\",\"code\":\"123\"},{\"name\":\"李四\",\"code\":\"123\"}]&quot

    2022年6月20日
    27
  • android 转到iphone6s,安卓如何将数据转到iPhone上?

    android 转到iphone6s,安卓如何将数据转到iPhone上?原标题:安卓如何将数据转到iPhone上?同事张明月之前使用的是安卓荣耀手机,不过前几天在更换手机的时候,在别人的建议她入手了一款iPhone12手机。张明月也想见识一下传说中非常流畅的苹果ios系统,她使用了一天后表示这款手机确实比较好用,所以她现在需要把之前荣耀手机中的数据转移到iPhone手机上了。张明月在找了一些“安卓如何将数据转移到iPhone上”的相关问题,发现QQ手机同步助手是可以把…

    2022年9月2日
    2

发表回复

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

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