最近试用了下 Sql Server 2008 的    Maintenance Plans( 维护计划 ),感觉很不错很不错。一贯的延续了微软的风格,图形化界面操作,保准你掌握了这个,就能成为半个DBA了,哈哈,吹牛了,就是想说这个蛮不错的,特别是比这 Sql Server 2000 和 Sql Server 2005 来说,用户体验又好了一些。

废话不多说了,下面就开始详细介绍 Maintenance Plans( 维护计划 ) :

官方对维护计划,即  Maintenance Plans 的解释:维护计划向导可以用于帮助您设置核心维护任务,从而确保数据库执行良好,做到定期备份数据库以防系统出现故障,对数据库实施不一致性检查。维护计划向导可创建一个或多个 SQL Server 代理作业,代理作业将按照计划的间隔自动执行这些维护任务。它使您可以执行各种数据库管理任务,包括备份、运行数据库完整性检查、或以指定的间隔更新数据库统计信息。创建数据库维护计划可以让SQL Server有效地自动维护数据库,保持数据库运行在最佳状态,并为管理员节省了宝贵的时间。

其实用一句话来说,Maintenance Plans( 维护计划 ) 就是来帮你方便的管理和优化数据库。

其内部,仍然是封装了部分 T-Sql 语句和 job

Maintenance Plans( 维护计划 )主要能做的工作为:

1. 备份数据库(Back Up Database)

2. 更新统计信息(Update Statistics)

3. 检查数据库完整性(Check Database Integrity)

4. 清除历史记录(History Cleanup)

5. 清除维护(Maintenance Cleanup)

6. 收缩数据库(Shrink Database)

7. 通知操作员(Notify Operator)

8. 执行 Sql Server 代理作业(Execute SQL Server Agent Job)

9. 执行 T-SQL 语句(Execute T-SQL Statement)

10. 重新生成索引(Rebuild Index Task)

11. 重新组织索引(Reorganize Index)

1. 备份数据库(Back Up Database)

最常用,也是最重要的功能了,是用起来也很见很简单,直接从左边拖拽过来

之后,在“备份数据库任务” 上右键编辑或者直接双击红色的图标,进行详细配置,详细配置信息如下图所示:

大致一看,就能明白大多配置的意思。其中有几个还是需要特殊说明一下的。

数据库:该选项选择备份Sql Server 实例中的那几个库,可以多选

备份集过期时间:是备份的失效时间,数值在 0 -99999之间,0 代表永不过气,此选项也是比较有用的,如果磁盘空间不足,新的备份文件就会覆盖掉过期的备份文件

跨一个或多个文件备份数据库:适合多文件组的数据库

2. 更新统计信息

更新 MicrosoftSQL Server 中对 表和索引的统计信息,此任务使用 UPDATE STATISTICS 语句。这个还是蛮有用的,主要影响 Sql Server 创建更好的查询计划。

上图标红的按钮,可以查看该任务封装的SQL语句

3. 检查数据库完整性(Check Database Integrity)

其实就是 DBCC CHECKDB 的 T-Sql  的封装,没什么好说的。主要用来检查数据库的完整性,DBCC CHECKDB 及相关语句通常必须从磁盘将每个已分配的页读取到内存中,才能对其进行检查,所以极消耗性能,不建议在高峰期使用。

另外,鄙人一直找不到用 DBCC CHECKDB 这个语句的地方,可能还没有碰到相应的问题把,或者由于鄙人才疏学浅啦

4. 清除历史记录(History Cleanup)

使用“‘清除历史记录’任务”对话框,可以丢弃 msdb 数据库表中旧的历史信息。 此任务支持删除备份和还原历史记录、SQL Server 代理作业历史记录和维护计划历史记录。

其实个人观察,清除的应该是 日志里面的内容

5. 清除维护(Maintenance Cleanup)

这个功能很实用,绝对的实用,并且很简单,主要用来删除备份文件或其他文件,并且图形化界面,功能也很全面,有了这个功能,绝对不会再怕备份文件把磁盘占满了。

想当初,还写的是清除文件的bat,然后放到任务计划里面,现在想起来,那种操作真不犀利了,Sql Server 已经为我们考虑好了

详细配置看下图(主要包括:删除以下类型的文件、文件位置、文件保留时间):

6. 收缩数据库(Shrink Database)

这个功能鄙人不太常用,主要是用来减小数据库所占用的磁盘空间大小,下面就引用一段MSDN 的解释把:

使用“‘收缩数据库’任务”对话框可以创建一个任务,尝试减小所选数据库 的大小。使用下面的选项可以确定数据库收缩后在数据库中保留的未使用空间量(该百分比越大,数据库可收缩的量越小)。该数值取决于数据库中实际数据的百分 比。例如,某个 100 MB 数据库包含 60 MB 的数据和 40 MB 的可用空间,当可用空间百分比为 50% 时,则将保留 60 MB 的数据和 30 MB 的可用空间(因为 60 MB 的 50% 是 30 MB)。只会去除数据库中的多余空间。有效值为 0 到 100。

此任务执行 DBCC SHRINKDATABASE 语句。

7. 通知操作员(Notify Operator)

使用的也是比较少,不过随着数据库重要性的上升,这个任务的重要程度也会提升的

摘自MSDN:使用“‘通知操作员’任务”对话框可以向此维护计划中添加自动通知。若要使用此任务,必须启用数据库邮件并将 MSDB 正确配置为邮件主机数据库,而且还要具有一个带有有效电子邮件地址的 MicrosoftSQL Server 代理操作员。

此任务使用 sp_notify_operator 存储过程。

8. 执行 Sql Server 代理作业(Execute SQL Server Agent Job)

感觉比较鸡肋的功能,主要用来执行 job 的,不知道怎么用,还不如在 SQL Server Agent 里面设置 Job。

9. 执行 T-SQL 语句(Execute T-SQL Statement)

蛮有用的,设置也比较简单,超时时间最好设置下

10. 重新生成索引(Rebuild Index Task) 和 重新组织索引(Reorganize Index)

这两个比较重要,又比较常用,同时又有可比性,所以就放在一起说。其实,在维护中,一般只选择这两个中的其中一个,对于如何选择,则是表的大小和db请求压力等决定的。

重新生成索引比重新组织索引更彻底,更给力,但是对于在线DB来讲,影响也比较大.。下面是详细的解释:

无论何时对基础数据执行插入、更新或删除操作,SQL Server 数据库引擎都会自动维护索引。随着时间的推移,这些修改可能会导致索引中的信息分散在数据库中(含有碎片)。当索引包含的页中的逻辑排序(基于键值)与数 据文件中的物理排序不匹配时,就存在碎片。碎片非常多的索引可能会降低查询性能,导致应用程序响应缓慢。

您可以通过重新组织索引或重新生成索引来修复索引碎片。对于基于分区方案生成的已分区索引,可以在完整索引或索引的单个分区上使用下列方法之一。

重新组织索引:

若要重新组织一个或多个索引,可以使用带 REORGANIZE 子句的 ALTER INDEX 语句。此语句可以替代 DBCC INDEXDEFRAG 语句。若要重新组织已分区索引的单个分区,可以使用 ALTER INDEX 的 PARTITION 子句。

重新组织索引是通过对叶页进行物理重新排序,使其与叶节点的逻辑顺序 (从左到右)相匹配,从而对表或视图的聚集索引和非聚集索引的叶级别进行碎片整理。使页有序可以提高索引扫描的性能。索引在分配给它的现有页内重新组织, 而不会分配新页。如果索引跨多个文件,将一次重新组织一个文件,不会在文件之间迁移页。

重新组织还会压缩索引页。如果还有可用的磁盘空间,将删除此压缩过程中生成的所有空页。压缩基于 sys.indexes 目录视图中的填充因子值。

重新组织进程使用最少的系统资源。而且,重新组织是自动联机执行的。该进程不持有长期阻塞锁,所以不会阻止运行查询或更新。

索引碎片不太多时,可以重新组织索引。请参阅上面的表,了解有关碎片的指导原则。不过,如果索引碎片非常多,重新生成索引则可以获得更好的结果。

大型对象数据类型压缩

重新组织索引时,除了重新组织一个或多个索引外,默认情况下还将压缩聚集索引或基础表中包含的大型对象数据类型 (LOB)。数据类型 image、text、ntext、varchar(max)、nvarchar(max)、varbinary(max) 和 xml 都是大型对象数据类型。压缩此数据可以改善磁盘空间使用情况:

重新组织指定的聚集索引将压缩该聚集索引的叶级别(数据行)包含的所有 LOB 列。

重新组织非聚集索引将压缩该索引中属于非键(包含性)列的所有 LOB 列。

如果指定 ALL,将重新组织与指定的表或视图相关联的所有索引,并压缩与聚集索引、基础表或带有包含列的非聚集索引相关联的所有 LOB 列。

如果 LOB 列不存在,则忽略 LOB_COMPACTION 子句。

重新生成索引:

重新生成索引将删除该索引并创建一个新索引。此过程中将删除碎片,通过使用指定的或现有的填充因子设置压缩页来回收磁盘空间,并在连续页中对索引行重新排序(根据需要分配新页)。这样可以减少获取所请求数据所需的页读取数,从而提高磁盘性能。

可以使用下列方法重新生成聚集索引和非聚集索引:

带 REBUILD 子句的 ALTER INDEX。此语句将替换 DBCC DBREINDEX 语句。

带 DROP_EXISTING 子句的 CREATE INDEX。

每个方法执行的功能都相同,但如下表所示,也都各有优缺点需要考虑。

功能

ALTER INDEX REBUILD

CREATE INDEX WITH DROP_EXISTING

可以通过添加或删除键列、更改列顺序或更改列排序顺序来更改索引定义。*

是**

可以设置或修改索引选项。

可以在单个事务中重新生成多个索引。

可以联机重新生成大部分索引类型,而不会阻止运行查询或更新。

已分区索引可以重新分区。

可以将索引移动到另一个文件组中。

需要额外的临时磁盘空间。

重新生成聚集索引的操作将重新生成相关的非聚集索引。

除非指定关键字 ALL。

除非更改索引定义。

可以重新生成强制 PRIMARY KEY 和 UNIQUE 约束的索引,而不用删除并重新创建这些约束。

可以重新生成单个索引分区。

* 通过在索引定义中指定 CLUSTERED,可以将非聚集索引转换成聚集索引类型。执行此操作时必须将 ONLINE 选项设置为 OFF。不管将 ONLINE 设置成什么,都不支持从聚集索引到非聚集索引的转换。

** 如果通过使用相同的名称、列和排序顺序重新创建索引,则可以省略排序操作。重新生成操作将检查行是否在生成索引时进行了排序。

您也可以先使用 DROP INDEX 语句删除索引,然后使用一个单独的 CREATE INDEX 语句重新创建该索引,通过这种方式重新生成索引。将这些操作作为单独的语句执行有许多缺点,因此不推荐这样做。

Maintenance Plans(维护计划)详解【转】的更多相关文章

  1. sql server 的Maintenance Plans(维护计划)详解

    下面说下我遇到的场景,就是我通过数据库自身的维护计划建立了数据库收缩自动计划,却发现数据库并没有实际性收缩. 前奏自动化配置流程 数据库--管理---维护计划--双击(维护计划向导)--下一步--名称 ...

  2. linux查看端口及端口详解

    今天现场查看了TCP端口的占用情况,如下图   红色部分是IP,现场那边问我是不是我的程序占用了tcp的链接,,我远程登陆现场查看了一下,这种类型的tcp链接占用了400多个,,后边查了一下资料,说E ...

  3. 服务器.htaccess 详解以及 .htaccess 参数说明(转载)

    htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录.作为用户,所能使用的命令受到限 ...

  4. .htaccess详解及.htaccess参数说明【转】

    目录(?)[-] htaccess 详解 htaccess rewrite 规则详细说明 RewriteEngine OnOff RewriteBase URL-path RewriteCond Te ...

  5. Linux 高可用(HA)集群之keepalived详解

    http://freeloda.blog.51cto.com/2033581/1280962 大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用 ...

  6. Spring Boot 2.x 快速入门(下)HelloWorld示例详解

    上篇 Spring Boot 2.x 快速入门(上)HelloWorld示例 进行了Sprint Boot的快速入门,以实际的示例代码来练手,总比光看书要强很多嘛,最好的就是边看.边写.边记.边展示. ...

  7. 网络-02-端口号-linux端口详解大全

    端口详解 1 tcpmux TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器  2 compressnet Management Utility compr ...

  8. 【转】.htaccess详解及.htaccess参数说明

    .htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录.作为用户,所能使用的命令受到 ...

  9. hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解

    hadoop1.2.1+zk-3.4.5+hbase-0.94.1集群安装过程详解 一,环境: 1,主机规划: 集群中包括3个节点:hadoop01为Master,其余为Salve,节点之间局域网连接 ...

随机推荐

  1. 8-4 Fabled Rooks uva11134

    题意:你的任务是在n*n的棋盘上放 n 小于5000 个车 使得任意两个车不互相攻击 且第i个车在一个给定的矩形ri之内  给出该矩形左上角坐标和右下角坐标四个点  必须满足放车的位置在矩形内  边上 ...

  2. 见微知著(一):解析ctf中的pwn--Fast bin里的UAF

    在网上关于ctf pwn的入门资料和writeup还是不少的,但是一些过渡的相关知识就比较少了,大部分赛棍都是在不断刷题中总结和进阶的.所以我觉得可以把学习过程中的遇到的一些问题和技巧总结成文,供大家 ...

  3. JDK源码分析(三)——HashMap 下(基于JDK8)

    目录 概述 内部字段及构造方法 哈希值与索引计算 存储元素 扩容 删除元素 查找元素 总结 概述   在上文我们基于JDK7分析了HashMap的实现源码,介绍了HashMap的加载因子loadFac ...

  4. TPS和QPS是什么,他们的区别是什么

    一.TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数.TPS包括一条消息入和一条消息出,加上一次用户数据库访问.(业务TPS = CAPS × ...

  5. 怎么将maven项目打包成war包

    问题:我在eclipse上能运行,然后我想将这个maven项目打包成war然后放到另外一台机子上(其实是手动放在tomcat的webapp目录中),提供外部访问.现在问题是,一直maven项目打包一直 ...

  6. [leetcode greedy]55. Jump Game

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  7. 面向对象设计原则 开放封闭原则(Open Closed Principle)

    开放封闭原则(OCP,Open Closed Principle) 开放封闭原则是所有面向对象原则的核心. 软件设计本身所追求的目标就是封装变化.降低耦合,而开放封闭原则正是对这一目标的最直接体现. ...

  8. 直接插入排序(高级版)之C++实现

    直接插入排序(高级版)之C++实现 一.源代码:InsertSortHigh.cpp /*直接插入排序思想: 假设待排序的记录存放在数组R[1..n]中.初始时,R[1]自成1个有序区,无序区为R[2 ...

  9. 第一章--Go与web应用

    Go语言构建web应用的特性 可扩展 可维护 模块化 高性能 HTTP简介 HTTP是一种无状态.由文本构成的请求-响应(request-response)协议,这种协议使用的是客户端-服务器(cli ...

  10. 7.4 (java学习笔记)网络编程之TCP

    一.TCP 1.1 TCP(Transmission Control Protocol 传输控制协议),是一种面向连接的,安全的传输协议,但效率相比于UDP而言比较低. TCP传输时需要确保先建立连接 ...