作者:动态网站…
来源:动态网站制作指南
热度:
2007-6-3 10:56:16
Keep index online while reindexing
使用 ONLINE 选项,用户可以在索引操作期间访问基础表或聚集索引数据以及任何关联的非聚集索引。
生成代码:(只选择了Employee表)
ALTER INDEX [PK_Employee_EmployeeID] ON [HumanResources]. [Employee] REBUILD WITH ( FILLFACTOR = 90, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, SORT_IN_TEMPDB = OFF, ONLINE = OFF )
Updata Statics(更新统计信息)
为指定的表或索引视图中的一个或多个统计信息组( 集合)更新键值分布信息。
此任务封装 UPDATE STATISTICS 语句。
All existing statistics
如果更新应用于所有统计信息,则暗示使用 WITH ALL 子句。
Column statistics only
如果更新仅 应用于列,则包含 WITH COLUMN 子句。
Index statistics only
如果更新仅应用于索引,则包含 WITH INDEX 子句。
Full scan
全部统计
Sample by
从每个索引所对应的表中抽样的数据,此样本的大小取决 于表中的行数和数据修改的频率。
生成代码:(只选择了Employee表)
UPDATE STATISTICS [HumanResources].[Employee]
WITH FULLSCAN
Clean Up History(清除历史记录)
使用“清除历史记录”对话框,可以放 弃 msdb 数据库表中旧的历史信息。此任务支持对备份和还原历史记录、Microsoft SQL Server 代理作业历史记录和维护计划历史记录进行删除。
此任务封装 sp_delete_backuphistory 系统存储过程并将指定日期作为参数传递给该过程。
选项:
Backup and restore history
Sql Server Agent job history
Maintenance plan history
生成代码:
declare @dt datetime select @dt = cast(N'2007-05-31T08:00:00' as datetime)
exec msdb.dbo.sp_delete_backuphistory @dt
GO
EXEC msdb.dbo.sp_purge_jobhistory @oldest_date=@dt
GO
EXECUTE msdb..sp_maintplan_delete_log null,null,@dt
GO
Execute Sql Server Agent Job(执行 SQL Server 代理作业)
任务运行 SQL Server 代理作业。SQL Server 代理作业能够自动执行您需要重复执行的任务。
此任务封装 sp_start_job 系统 过程并把 SQL Server 代理作业的名称作为参数传递给该过程。
Back Up Database Task
备份用的,太熟悉了,不介绍了。
Maintenance Cleanup Task
此任务封装 master.dbo.xp_delete_file 系统过程,用来删除备份文件。
Execute T-SQL Statement Task
执行T-SQL 任务运行Transact-SQL 语句。这个任务用向导的时候是没有的,要到设计视图里面去拖出来。
Notify Operator Task
通知操作员任务将通知消息发送到 SQL Server 代理操作员。此任务是唯一一个不封装 Transact-SQL 语句或 DBCC 命令的数据库维护任务。
执行维护计划最好按一定的顺序,首先是执行检查数据库完整性,然后是收缩数据库,重新生成索引或者重新组织索引任务,最后是更新统计信息。
重新生成索引或者重新组织索引要根据情况选择不同的操作,两个一起选择没有什么意义。决定使用哪种碎片整理方法的第一步是分析索引以确定碎片程度。使用系统函数 sys.dm_db_index_physical_stats 可以检测特定索引、表或索引视图的所有索引、一个数据库中的所有索引或所有数据库中的所有索引中的碎片。知道碎片程度后,可以确定修复碎片的最佳方法。索引碎片不太多时,可以重新组织索引。不过,如果索引碎片非常多,重新生成索引则可以获得更好的结果。
我们公司这些任务都是一个星期运行一次,几个数据库加起来有200G,数据库也不算很大,每次运行要两个小时以上,所以都是在凌晨进行。如果进行的是重新生成索引那么在执行的时候表是无法访问的,现在也没什么更好的解决方案。这个问题还在继续学习中!
我来说两句:
推荐文章
相关文章