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

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

背景

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


相关推荐

  • Autoware入门学习(一)——Autoware自动驾驶框架介绍

    Autoware入门学习(一)——Autoware自动驾驶框架介绍Autoware简介Autoware.AI是世界上第一个用于自动驾驶技术的“All-in-One”开源软件。它ROS1操作系统,并在Apache2.0许可下使用。主要包含以下模块:定位(Localization):通过结合GNSS和IMU传感器的3D地图和3D地图、SLAM算法来实现定位。检测(Detection):通过传感器融合算法和深度神经网络使用摄像机和激光雷达完成检测。预测和规划(PredictionandPlanning):基于概率机器人模型和基于规则的系统,部分还使用深度神经

    2022年4月19日
    951
  • C语言socket实现文件下载[通俗易懂]

    C语言socket实现文件下载[通俗易懂]是网络编程的作业,我比较菜。。。写到定位输出,做百分比出现了问题,不显示0到100的,直接从0跳到了100。请教了下大佬。改了过来。原来是类型的问题,做出来的运算应该是float,但是我都定义的int,输出也是,大佬指出后,我好尴尬。。。犯了小错误。。。但是在这次过程也学习了一波。要加油了!!!代码写的这么乱!!!写的是带颜色的版本,,颜色有可能会觉得妖艳,,,好吧。编译平台是vc++6.0

    2022年7月14日
    13
  • dumpbin 用法

    dumpbin 用法今天工作中需要查看dll中的内部结构所以重点学习了一下dumpbin的用法dumpbin.exe在/VC/BIN目录下,如果在其他目录下无法使用dumpbin,可以运行该目录下VCVARS32.BAT,这个批处理文件就是用来修复VC环境的。 下面列出了DUMPBIN命令行选项。此外列出每个选项提供的输出的一些了。/ALL显示除代码反汇编外的所有可用信息。使用

    2022年6月19日
    83
  • Kali Linux 安装过程 超详细(图文并茂,通用版)

    Kali Linux 安装过程 超详细(图文并茂,通用版)从Kali2020.1版本新功能说起,在大致读过版本发布说明后,再进行安装,就不会有太大问题,不会频繁出错。然后给出了多种镜像下载途径,包括历史所有版本的镜像,供读者自行选择下载。最后开始正式安装,内容也是十分详细,图文并茂。在文章最后,介绍了默认安装的情况下,如果获取large版本,获取更多工具。最后介绍如何更新Kali,可升级至Kali2020.2版本。

    2022年6月4日
    72
  • unity开发微信小游戏1[通俗易懂]

    unity开发微信小游戏1[通俗易懂]unity开发微信小游戏

    2025年5月31日
    2
  • MyEclipse10安装SVN插件的几种方法

    MyEclipse10安装SVN插件的几种方法方法一:直接解压下载SVN插件:site-1.6.18.ziphttps://github.com/subclipse/subclipse解压后将features文件和plugins文件拷贝至:D:\MyEclipse\MyEclipse10\dropins(MyEclipse的安装目录)重启MyEclipse即可出现SVN!方法二:在线安装打开HELP->MyEclipseConfi

    2022年7月21日
    11

发表回复

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

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