当前位置:首页 » 操作系统 » 数据库定时器

数据库定时器

发布时间: 2022-05-08 23:16:45

1. 我在linux下写了一个定时器,每过一分钟将数据读入数据库一次,但是在运行的过程中,只运行一分钟就段错误

1、你的段错误不是发生在这些代码中,需要调试都能确定到底发生在哪里。你可以先不用定时器,只循环地调用几次数据操作看,一点点地隔离,找出越界的指针。
2、while(1);这种方式最好不要用,它可能会将CPU占到100%,实现要用的话循环里加个sleep吧。

2. Mysql定时器可以设置执行次数吗

mysql要实现定时执行sql语句就要用到Event

具体操作如下:

先看看看event 事件是否开启
show variables like '%sche%';

如没开启,则开启。需要数据库超级权限
set global event_scheler =1;

创建存储过程 update_a (注:就是你要执行的sql语句)
mysql> create procere update_a() update a set a.y_avg=(select avg(b.youhao) from b where a.a_id=b.a_id);

创建一个定时任务:event e_updateA
mysql> create event if not exists e_updateA
-> on schele every 60 second ---设置60秒执行一次

-> on schele at date_add(now(),interval 1 minute) ---在一分钟后执行

-> on completion preserve
-> do call update_a(); ---执行update_a()存储过程

创建Event之后,sql语句就定时执行一次。

关闭事件任务

3. 数据库集群,怎么解决spring定时器的重复问题

有两种流行Spring定时器配置:java的Timer类和OpenSymphony的Quartz。

1.Java Timer定时

首先继承java.util.TimerTask类实现run方法

import java.util.TimerTask;
public class EmailReportTask extends TimerTask{
@Override
public void run() {
...
}
}
在Spring定义

...

配置Spring定时器

<bean id="scheleReportTask" class="org.springframework.scheling.timer.ScheledTimerTask">
<property name="timerTask" ref="reportTimerTask" />
<property name="period">
<value>86400000value>
property>
bean>
timerTask属性告诉ScheledTimerTask运行哪个。86400000代表24个小时

启动Spring定时器

Spring的TimerFactoryBean负责启动定时任务

<bean class="org.springframework.scheling.timer.TimerFactoryBean">
<property name="scheledTimerTasks">
<list><ref bean="scheleReportTask"/>list>
property>
bean>
scheledTimerTasks里显示一个需要启动的定时器任务的列表。
可以通过设置delay属性延迟启动
<bean id="scheleReportTask" class="org.springframework.scheling.timer.ScheledTimerTask">
<property name="timerTask" ref="reportTimerTask" />
<property name="period">
<value>86400000value>
property>
<property name="delay">
<value>3600000value>
property>
bean>
这个任务我们只能规定每隔24小时运行一次,无法精确到某时启动

2.Quartz定时器

首先继承QuartzJobBean类实现executeInternal方法

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheling.quartz.QuartzJobBean;

public class EmailReportJob extends QuartzJobBean{
protected void executeInternal(JobExecutionContext arg0)
throws JobExecutionException {
...
}
}
在Spring中定义

<bean id="reportJob" class="org.springframework.scheling.quartz.JobDetailBean">
<property name="jobClass">
<value>EmailReportJobvalue>
property>
<property name="jobDataAsMap">
<map>
<entry key="courseService">
<ref bean="courseService"/>
entry>
map>
property>
bean>
在这里我们并没有直接声明一个EmailReportJob Bean,而是声明了一个JobDetailBean。这个是Quartz的特点。JobDetailBean是Quartz的org.quartz.JobDetail的子类,它要求通过jobClass属性来设置一个Job对象。

使用Quartz的JobDetail中的另一个特别之处是EmailReportJob的courseService属性是间接设置的。JobDetail的jobDataAsMap属性接受一个Map,包括设置给jobClass的各种属性,当。JobDetailBean实例化时,它会将courseService Bean注入到EmailReportJob 的courseService 属性中。

启动定时器

Quartz的org.quartz.Trigger类描述了何时及以怎样的频度运行一个Quartz工作。Spring提供了两个触发器SimpleTriggerBean和CronTriggerBean。
SimpleTriggerBean与scheledTimerTasks类似。指定工作的执行频度,模仿scheledTimerTasks配置 .

<bean id="simpleReportTrigger" class="org.springframework.scheling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="reprotJob" />
<property name="startDelay">
<value>360000value>
property>
<property name="repeatInterval">
<value>86400000value>
property>
bean>
startDelay也是延迟1个小时启动

CronTriggerBean指定工作的准确运行时间

<bean id="cronReportTrigger" class="org.springframework.scheling.quartz.CronTriggerBean">
<property name="jobDetail" ref="reprotJob" />
<property name="cronExpression">
<value>0 0 6 * * ?value>
property>
bean>
属性cronExpression告诉何时触发。最神秘就是cron表达式:

Linux系统的计划任务通常有cron来承担。一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。从左到右:

1.秒2.分3.小时4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份(1970-2099)
每个元素都显示的规定一个值(如6),一个区间(9-12),一个列表(9,11,13)或一个通配符(*)。因为4和6这两个元素是互斥的,因此应该通过设置一个问号(?)来表明不想设置的那个字段,“/”如果值组合就表示重复次数(10/6表示每10秒重复6次)。

启动定时器

<bean class="org.springframework.scheling.quartz.SchelerFactoryBean">
<property name="triggers">
<list><ref bean="cronReportTrigger"/>list>
property>
bean>
triggers属性接受一组触发器。

4. oracle数据库用了定时器查询数据库,每一分钟查询一次,一段时间后导致数据库最大连接数太大

你每次查询都是新开一个连接吗?还是使用同一个连接?

如果每次都是新连接的话,那每次使用后,都要把对应的连接关闭掉。

同一个连接就没有关系了。

5. js定时器怎么和数据库进行交互

这里面关联的全掏出来的话,够挑好机挑,只能简易描述一下可以:
setInterval或setTimeout这两个都可以实现,
setinterval为恒定运行时使用比较合适,如时间在跳,
setTimeout为条件满足时继续轮询比较合适,如升一级给下一个任务一样,
setTimeout("fun()",5000);5秒后执行fun()这个过程
function
fun(){
//这里要启动AJAX模型,向服务器发出GET或POST请求,
//如:接受为:user.php,PHP程序访问数据库进行处理
//返回responseText,JS可以调用,
//如果返回的结果你满意,允许继续轮询就启动setTimeout("fun()",5000);
//这样一来你就看到了一个自运行的一个机制了。。
//具体代码太多,无法展示。。。
}

6. 我想问下我设定了定时器,每5秒从数据库读数据,但是发现后来读完了没数据了,还继续读,结果出错了

if的逻辑可能出错了.你应该有这样的思想:如果已经读完,就应该出现跳出循环的状态.if
else中间的逻辑再思考一次.
C#语言的语法,我不是很懂,不好意思.

7. oracle数据库怎么创建定时任务

工作中,我们使用的数据库大部分是oracle、mysql、db2、sql server等数据库,在使用oracle最匹配的工具plsql的时候,如果用plsql创建定时器呢看下面我简单介绍使用工具创建定时器的方法。

热点内容
db2数据库别名 发布:2024-10-08 08:19:02 浏览:239
如何更换安卓系统时钟 发布:2024-10-08 08:12:54 浏览:396
电脑创建服务器软件 发布:2024-10-08 08:12:47 浏览:476
如何防微信恶意找回密码 发布:2024-10-08 08:01:58 浏览:812
aspnet存储过程分页 发布:2024-10-08 08:01:47 浏览:460
王者安卓怎么拍高清视频教程 发布:2024-10-08 07:57:04 浏览:263
酒吧灯光编程 发布:2024-10-08 07:52:42 浏览:8
别克英朗买15哪个配置好 发布:2024-10-08 07:43:38 浏览:237
android安装sdk 发布:2024-10-08 07:42:41 浏览:329
qq空间音乐缓存 发布:2024-10-08 07:05:49 浏览:738