如何提高SQL Server的恢复速度?

原文链接:http://www.simple-talk.com/sql/backup-and-recovery/faster-restores-best-practices-to-increase-speed/

以下是基于原文的翻译及精简后的内容.

如何提高SQL Server数据库的还原速度

  1. 经常练习还原数据所使用的命令.
    每隔一段时间(最少一个月)演练一两遍还原数据库的操作. 如果真的碰到需要还原数据库的操作, 就可以直接写需要的语句, 减少查找联机丛书的时间, 避免语句中的语法错误. 这样可以节省至少一刻钟的时间.


  2. 启用文件快速初始化.
    还原数据库的时候, 如果使用with move参数, 操作系统会在新的路径下创建数据库所需要的文件. 从SQL Server 2005开始, SQL Server可以使用windows的文件快速初始化功能来初始化还原数据库所生成的文件. 要启用这个功能,需要将SQL Server database engine 的启动账户添加到'执行卷维护任务'(Perform Volume Maintenance Tasks)的组策略中. 启用这个功能可以快速提高初始化数据文件的速度, 节省大量的时间.(有两点需要注意一下, 一个是文件快速初始化只能应用于数据文件, 对日志文件不适用; 二是文件快速初始化有安全上的隐患, 因为通过快速初始化创建的文件中含有磁盘中原有的数据, 而没有用0覆写.)

  3. 服务器硬件
    存储的读写速度如何, 对数据库的恢复速度影响也比较大. 更多的磁盘或者使用SSD会加快还原的速度, 另外更大的内存和更快更多的CPU也是一样.

  4. 备份压缩
    从SQL Server 2008开始, 支持对数据库进行压缩备份. 磁盘是系统中最慢的部分, 而压缩后的数据库备份数据量更小, 这样节省了生成备份时,往磁盘上写数据的时间, 同样也节省了还原时,从磁盘上读备份的时间. 当然压缩或者解压是需要额外的CPU资源, 这点需要注意.

  5. 多文件
    在备份数据库时,备份到多个文件,这样并行处理可以提高备份的速度; 如果这些备份文件又是分散在不同的物理磁盘上, 那么会节省更多的备份时间. 还原时也是一样.

  6. 就地还原
    在还原已有数据库的备份时, 不使用with move的选项, 直接覆盖已有文件, 可以节省文件初始化所需要的时间.

  7. 恢复
    数据库备份的还原过程中, 先是做restore, 然后是recover, 恢复的操作就是回滚或者前滚事务, 以保持数据库的一致性. SQL Server 有一个(Recovery Interval) 的选项,控制checkpoint发生的频率. 这个选项的默认值是0, 也就是由SQL Server自动调整checkpoint发生的频率. 除非由SQL Server自动控制的checkpoint发生频率严重影响了系统性能, 否则建议不修改这个选项.(曾经在生产环境中碰到过这样的问题, 由于把recovery interval改到24小时, 导致数据库意外重启后, 恢复了20个小时以上, 不得已用备份库当做生产库用, 后来花了很长时间去补数据.)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【赛迪网-IT技术报道】SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:   1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)     2、I/O吞吐量小,形成了瓶颈效应。     3、没有创建计算列导致查询不优化。     4、内存不足     5、网络速度慢     6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)     7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)     8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。     9、返回了不必要的行和列     10、查询语句不好,没有优化 ●可以通过以下方法来优化查询 : 1、把数据、日志、索引放到不同的I/O设备上,增加读取速度,以前可以将Tempdb应放在RAID0上,SQL2000不在支持。数据量(尺寸)越大,提高I/O越重要。 2、纵向、横向分割表,减少表的尺寸(sp_spaceuse) 3、升级硬件 4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值0)。索引应该尽量小,使用字节数小的列建索引好(参照索引的创建),不要对有限的几个值的字段建单一索引如性别字段。 5、提高网速。 6、扩大服务器的内存,Windows 2000和SQL server 2000能支持4-8G的内存。 配置虚拟内存:虚拟内存大小应基于计算机上并发运行的服务进行配置。运行 Microsoft SQL Server? 2000时,可考虑将虚拟内存大小设置为计算机中安装的物理内存的1.5倍。如果另外安装了全文检索功能,并打算运行Microsoft搜索服务以便执行全文索引和查询,可考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的3倍。将SQL Server max server memory服务器配置选项配置为物理内存的1.5倍(虚拟内存大小设置的一半)。 7、增加服务器CPU个数;但是必须 明白并行处理串行处理更需要资源例如内存。使用并行还是串行程是MsSQL自动评估选择的。单个任务分解成多个任务,就可以在处理器上运行。例如耽搁查询 的排序、连接、扫描和GROUP BY字句同时执行,SQL SERVER根据系统的负载情况决定最优的并行等级,复杂的需要消耗大量的CPU的查询最适合并行处理。但是更新操作UPDATE,INSERT, DELETE还不能并行处理。 8、如果是使用like进行查询的话,简单的使用index是不行的,但是全文索引,耗空间。 like ''a%'' 使用索引 like ''%a'' 不使用索引用 like ''%a%'' 查询时,查询耗时和字段值总长度成正比,所以不能用CHAR类型,而是VARCHAR。对于字段的值很长的建全文索引。 9、DB Server 和APPLication Server 分离;OLTP和OLAP分离 10、分布式分区视图可用于实现数据库服务器联合体。 联合体是一组分开管理的服务器,但它们相互协作分担系统的处理负荷。这种通过分区数据形成数据库服务器联合体的机制能够扩大一组服务器,以支持大型的多层 Web 站点的处理需要。有关更多信息,参见设计联合数据库服务器。(参照SQL帮助文件''分区视图'') a、在实现分区视图之前,必须先水平分区表 b、 在创建成员表后,在每个成员服务器上定义一个分布式分区视图,并且每个视图具有相同的名称。这样,引用分布式分区视图名的查询可以在任何一个成员服务器上 运行。系统操作如同每个成员服务器上都有一个原始表的复本一样,但其实每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。 11、重建索引 DBCC REINDEX ,DBCC INDEXDEFRAG,收缩数据和日志 DBCC SHRINKDB,DBCC SHRINKFILE. 设置自动收缩日志.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能。 在T-sql的写法上有很大的讲究,下面列出常见的要点:首先,DBMS处理查询计划的过程是这样的:   1、 查询语句的词法、语法检查     2、 将语句提交给DBMS的查询优化器     3、 优化器做代数优化和存取路径的优化     4、 由预编译模块生成查询规划     5、 然后在合适的时间提交给系统处理执行     6、 最后将执行结果返回给用户。 其次,看一下SQL SERVER的数据存放的结构:一个页面的大小为8K(8060)字节,8个页面为一个盘区,按照B树存放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值