eaglet

本博专注于基于微软技术的搜索相关技术
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

HubbleDotNet 之后台任务调度

Posted on 2011-03-02 19:57  eaglet  阅读(6651)  评论(27编辑  收藏  举报

HubbleDotNet 1.1 版本提供了一个后台任务调度功能,这个功能可以让你设置一些后台任务来定时执行一些系统维护操作,比如同步数据,优化索引等等。以前版本这些功能都需要使用者自己编程实现,1.1 以后版本只需要做个设置就可以了,不需要写任何代码了。

下面介绍一下这个后台任务调度功能的使用方法:

 

打开任务管理界面

如下图所示,在 HubbleDotNet 的 Query Analyzer 中选择 Management –> Task scheduler management

image

点击后会出来下面这个 Task scheduler 的窗体,在这个窗体中你可以增加,修改和删除一个后台任务,这里我已经建立了一个通过 EnglishNews 表的任务,下面就让我们看一看这个任务是怎么设置的。

image

 

任务的设置

image

如上图所示,后台任务设置分几个部分:

1. 任务名

你可以为任务取个容易理解的名字

2. 权限

你需要输入 HubbleDotNet 分配的用户名,密码,以及要在哪个数据库上执行。注意这个数据库是HubbleDotNet 的数据库。如果你采用非验证方式即你没有设置任何的用户名和密码,那么用户名和密码填空。

3. 要执行的SQL 语句

你需要输入一个SQL 语句,后台任务会根据你设置的时间周期定时执行这个SQL语句。这个例子中的任务是实现对现有表的索引同步,所以SQL 语句是

exec SP_SynchronizeTable 'EnglishNews', 5000, 2 这样的存储过程。我将在本文的最后给出几个在后台任务中比较常用的存储过程的介绍。

4. Type

这个地方设置任务是重复执行还是只执行一次,如果只执行一次,下面将要求输入开始执行的具体时间。

5. Frequency

这里设置执行频率。有以下几种频率

Daily:设置为Daily 表示以天为单位执行,下面有个执行间隔,如果设置为1 ,表示每天都执行。一般选Daily 时 Execute interval 都选1.

image

Weekly:设置为Weekly 表示以周为单位执行,你可以选择在周几执行这个任务

image

Monthly:设置为Monthly 表示以月为单位执行,你可以选择在从一个月的第几天开始执行,以及间隔几月执行,你也可以选择在一个月的第几个星期几执行。

 

image

 

6. Frequency daily

这里设置在一天中的执行频率,如果你选择 Execute at ,那么就是每天在这个时刻执行一次。如果选择Execute interval 则是设置间隔多长时间执行,有两个时间单位可以选择,可以按分钟间隔,也可以按小时间隔。后面的 Start 和 End  表示任务从几点开始执行到几点结束,如果要全天执行,就像下面这个图设置的那样从0点到23点59分59秒.

 

image

 

 

 

 

 

7. Duration

这里设置任务从哪天开始到哪天结束,如果任务没有起止日期,则设置为 Infinity 就可以了。

 

image

8. Abstract

这里输入这个任务的描述信息,如果任务比较多,这个描述信息可以方便你了解这个任务是干什么用的。

 

image

 

执行日志

后台任务到底有没有执行,执行有没有错误,我们需要有日志记录来查询,HubbleDotNet 提供了这个日志功能。在 Program file/HubbleDotNet/Default/Log

目录下有 App.log 和 Error.log 两种日志,前者将记录后台任务何时开始执行以及何时结束,后者将记录执行的错误信息。

 

常见的存储过程

同步索引

1.1 以前版本,被动表的索引自动同步需要编写程序来完成,1.1 版本后你只需要在后台任务中执行

SP_SynchronizeTable  这个存储过程就可以了,语法如下

exec SP_SynchronizeTable 'EnglishNews', 5000, 2

第1个参数 'EnglishNews' 表示要同步的表名

第2个参数 表示同步时一次更新多少数据,因为同步需要从数据库读取数据并索引,如果要索引的数据很多,一次无法全部读出,这里就用于设置一次从数据库读取多少行数据进行索引,这个数最大为10000.

第3个参数 表示优化参数。同步完后,这个存储过程将帮助自动进行优化。这个参数可以设置为如下几个数值:

0: 不进行优化

1: 按最小方式优化,这种方式优化后,每个全文索引字段只有一个索引文件,如果数据量大的话,这种优化方式将比较慢,因为每次都要整合为一个大文件。这种优化方式查询速度最快。

2:折中方式优化,这种优化方式,每个全文索引字段将优化为一大一小两个索引文件,通常情况下,大的索引文件不会变动,这种方式优化速度比上一种方式要快很多,查询速度稍有下降,如果数据量比较大,推荐用这种方式同步优化。

 

优化索引

SP_OptimizeTable

用这个存储过程,可以定时进行索引优化,语法

exec SP_OptimizeTable 'EnglishNews', 1

第1个参数 'EnglishNews' 表示要同步的表名

第2个参数 表示优化参数。这个是一个可选参数,如果不填,则按最小方式优化

1: 按最小方式优化,这种方式优化后,每个全文索引字段只有一个索引文件,如果数据量大的话,这种优化方式将比较慢,因为每次都要整合为一个大文件。这种优化方式查询速度最快。

2:折中方式优化,这种优化方式,每个全文索引字段将优化为一大一小两个索引文件,通常情况下,大的索引文件不会变动,这种方式优化速度比上一种方式要快很多,查询速度稍有下降。

3: 按最快优化,这种方式执行后按最快方式进行优化,但优化后最多会为每个全文索引字段留下64个索引文件,HubbleDotNet 在索引时默认就是按最快方式优化,所以这种方式通常不使用。

 

其他存储过程

HubbleDotNet  提供了很多系统存储过程,可以通过 SP_HELP 列出所有的系统存储过程,这些存储过程你都可以在后台任务中执行。

 

返回 Hubble.net 技术详解