sql server 备份恢复效率
sql server 备份恢复效率
如何提高备份的速度呢?
其实这个问题和如何让系统跑的更快是一样的,要想系统跑的更快,无非就是:优化系统,或者就是更好更强大的服务器,特别是更多的cpu、更大的内存、更快的硬盘。
提高备份的速度也是一样的,一般备份数据库,不太可能是系统宕机,为什么呢? 因为备份数据库所使用的系统资源不会占用太多,所以,要想提高备份的速度,那么只有允许备份使用更多的内存才行,通过下面的2个选项,给备份分配更多的资源,那么备份速度就大大提高了。
数据传输选项:
1、缓冲区使用的总计空间由下面公式确定:buffercount*maxtransfersize。
2、BUFFERCOUNT = { buffercount | @buffercount_variable }
指定用于备份操作的 I/O 缓冲区总数。 可以指定任何正整数;但是,较大的缓冲区数可能导致由于 Sqlservr.exe 进程中的虚拟地址空间不足而发生“内存不足”错误。
3、MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }
指定要在 SQL Server 和备份介质之间使用的最大传输单元(字节)。 可能的值是 65536 字节 (64 KB) 的倍数,最多可到 4194304 字节 (4 MB)。
能不能再快呢?
其实在备份的时候,之所以慢,是和IO的性能相关的,由于IO是整个计算机体系中最慢的,所以才导致备份也慢,但如果我们能减少写入磁盘的数据,不就可以提高性能了嘛,当然,在减少写入数据的同时,需要通过消耗更多的CPU资源来进行压缩,减小备份的数据大小。
compression选项:
指定对于此备份是否执行备份压缩。
从 SQL Server 2008 R2 开始,SQL Server 2008 R2 Standard 和所有更高版本都支持备份压缩。安装时,默认行为是不进行备份压缩。但此默认设置可通过设置 backup compression default 服务器配置选项进行更改。
默认情况下,压缩备份时,将执行校验和(也就是checksum选项)以检测是否存在介质损坏情况。
在SQL SERVER 的参数可知,默认服务器是不启用备份压缩的。
|
1
2
3
4
5
|
select name, description, value_in_use --是否启用此参数 from sys.configurations where name ='backup compression default' |
如果要启用备份压缩,可以运行如下的命令:
|
1
2
3
|
exec sp_configure 'backup compression default',1 reconfigure go |
还能再快吗?
这次是运用IO的并行特性,也就是如果在服务器上有多个物理硬盘,那么可以把一个备份文件条带化,比如,有3个硬盘,那么就把原来的备份文件,分成3份,分别存储到3个硬盘上。
下面是实验代码
1、先建库,建表,插入大量数据:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
use mastergoif DB_ID('db_test') is not null drop database db_testgoCREATE DATABASE db_testON( NAME = db_test_DATA, FILENAME = 'E:\db_test.mdf')LOG ON( NAME = db_test_LOG, FILENAME = 'E:\db_test.ldf')GOuse db_testgoselect * Into testfrom sys.objectsgoinsert into testselect *from testgo 20 |
2、普通的完整备份,耗时213秒:
|
1
2
3
4
5
6
7
8
|
backup database db_testto disk = 'e:\db_test.bak'with format/*已为数据库 'db_test',文件 'db_test_DATA' (位于文件 1 上)处理了 356448 页。已为数据库 'db_test',文件 'db_test_LOG' (位于文件 1 上)处理了 3 页。BACKUP DATABASE 成功处理了 356451 页,花费 213.018 秒(13.072 MB/秒)。*/ |
3、增大了IO缓冲区的完整备份,耗时142秒:
|
1
2
3
4
5
6
7
8
9
10
|
backup database db_testto disk = 'e:\db_test1.bak'with format, buffercount = 10, maxtransfersize = 4194304/*已为数据库 'db_test',文件 'db_test_DATA' (位于文件 1 上)处理了 356448 页。已为数据库 'db_test',文件 'db_test_LOG' (位于文件 1 上)处理了 1 页。BACKUP DATABASE 成功处理了 356449 页,花费 142.101 秒(19.597 MB/秒)。*/ |
4、增大IO缓冲区、压缩完整备份,耗时56秒:
|
1
2
3
4
5
6
7
8
9
10
11
|
backup database db_testto disk = 'e:\db_test2.bak'with format, buffercount = 10, maxtransfersize = 4194304, compression/*已为数据库 'db_test',文件 'db_test_DATA' (位于文件 1 上)处理了 356448 页。已为数据库 'db_test',文件 'db_test_LOG' (位于文件 1 上)处理了 1 页。BACKUP DATABASE 成功处理了 356449 页,花费 56.089 秒(49.648 MB/秒)。*/ |
5、增大IO缓冲区、压缩、条带化完整备份,耗时55秒,由于是笔记本电脑,就一个硬盘,所以效果不明显:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
backup database db_test to disk = 'c:\db_test_stripping1.bak', disk = 'd:\db_test_stripping2.bak', disk = 'e:\db_test_stripping3.bak'with format, buffercount = 10, maxtransfersize = 4194304, compression /*已为数据库 'db_test',文件 'db_test_DATA' (位于文件 1 上)处理了 356448 页。已为数据库 'db_test',文件 'db_test_LOG' (位于文件 1 上)处理了 1 页。BACKUP DATABASE 成功处理了 356449 页,花费 55.060 秒(50.576 MB/秒)。*/ |
通过在我的普通笔记本电脑上做的这个实验,我们可以看出明显的差别,特别是使用了compression选项后,比最原始的完整备份,速度提高了4倍。那么如果是服务器上,我想应该能提高更多。
sql server 备份恢复效率的更多相关文章
- 【SQL Server备份恢复】维护计划实现备份:每周数据库完整备份、每天差异备份、每小时日志备份
在数据库管理中,数据库备份是非常重要的. 通过维护计划向导,可以很方便的完成数据库备份. 下面的例子说明了如何实现数据库的备份,具体的备份策略是:每周日一次完整备份.每天差异备份(除周日外).每小时日 ...
- SQL server 备份/恢复/压缩 进度查询
第一步,用 sp_who2 查出备份的sid(或在窗口中的连接属性中看) exec sp_who2 第二步,用以下查询获得运行情况(看 percent_complete列) SELECT sessio ...
- 17、SQL Server 备份和还原
SQL Server 备份 恢复模式 SQL Server 数据恢复模式分为三种:完整恢复模式.大容量日志恢复模式.简单恢复模式. 完整恢复模式 默认的恢复模式,它会完整记录下操作数据库的每一个步骤, ...
- SQL Server 备份和还原
SQL Server 备份和还原 SQL Server 备份 恢复模式 SQL Server 数据恢复模式分为三种:完整恢复模式.大容量日志恢复模式.简单恢复模式. 完整恢复模式 默认的恢复模式, ...
- 第一篇——第一文 SQL Server 备份基础
原文:第一篇--第一文 SQL Server 备份基础 当看这篇文章之前,请先给你的所有重要的库做一次完整数据库备份.下面正式开始备份还原的旅程. 原文出处: http://blog.csdn.net ...
- SQL Server 备份和还原全攻略
原文:SQL Server 备份和还原全攻略 一.知识点 完全备份: 备份全部选中的文件夹,并不依赖文件的存档属性来确定备份那些文件.(在备份过程中,任何现有的标记都被清除,每个文件都被标记为已备份, ...
- sql server备份损坏
sql server备份损坏 转自:https://www.cnblogs.com/zhijianliutang/p/4080916.html 1.备份文件和数据库放在同一个(或一组)的物理磁盘上.磁 ...
- SQL Server 2005恢复数据库详细图文教程
不少需要用到sql2005的程序,有很多新手还是会操作,这里写个详细的图文教程送个菜鸟们,高手请飘过.适用于独立主机的朋友使用,如果你还没安装,请按照这个教程来安装 SQL Server 2005图文 ...
- SQL点滴12—SQL Server备份还原数据库中的小把戏
原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support 1 media families, ...
随机推荐
- ARM+LINUX嵌入式系统的终端显示中文乱码解决
前一段时间解决的一个问题,看起来是个小问题,实际解决这个问题却花了一个星期的晚上休息时间,记录分享一下. 问题描述: linux内核配置中NLS(native language support)已经选 ...
- SpringMVC系列之URL匹配问题
一.工程目录 二.web.xml配置文件及与其他文件的关系 三.控制器部分 四.返回值 五.url前后缀 六.项目源代码 http://files.cnblogs.com/files/xujian20 ...
- 浅析JavaBean
一.概述 JavaBean组件本质上是一个Java类,只是这个类的编码要遵循一些约定.用户可以使用JavaBean将功能.处理.值.数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的 ...
- Mac下Intellij IDea发布JavaWeb项目 详解二 (新建Module)
Step3 添加两个module 3.1 右键[WebWorkSpace]-[New]-[Module] 3.2 重复 准备工作1:新建第一个JavaWeb项目[1.6-1.11]的操作,建好一个名为 ...
- Linux线程编程之生产者消费者问题
前言 本文基于顺序循环队列,给出Linux生产者/消费者问题的多线程示例,并讨论编程时需要注意的事项.文中涉及的代码运行环境如下: 本文假定读者已具备线程同步的基础知识. 一 顺序表循环队列 1.1 ...
- 【Spring Boot&&Spring Cloud系列】Spring Boot中使用数据库之MySql
对于传统关系型数据库来说,Spring Boot使用JPA(Java Persistence API)资源库提供持久化的标准规范,即将Java的普通对象通过对象关系映射(ORM)持久化到数据库中. 项 ...
- PV&UV&IP之间的区别和联系
PV PV是网站分析的一个术语,用于衡量网站用户访问的网页的数量.对于广告投入商来说,PV值可以预期它可以带来多少收入广告,一般来说,OV与来访者的数量成正比,但是PV并不直接决定页面的真实来访者数量 ...
- 链表一元多项式计算器的实现(Java语言描述)
链表的经典应用,程序在多项式相加同类项合并还有小的瑕疵,有待改进. 代码如下: package 一元多项式计算器; public class PolyNode { private double a; ...
- Linux 下如何安装 .bin 文件
拿到 .bin 文件,在文件所在目录下执行如下命令即可安装, ./your-file-name.bin 如果提示 “没有那个文件或目录” ,给它加上执行权限即可,执行如下命令, chmod +x ./ ...
- Express+Less+Gulp配置高效率开发环境
版权声明:本文由金朝麟原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/627049001486519548 来源:腾云阁 h ...