【原创】数据库定时任务特性的妙用

  数据库定时执行任务,在业界流行的各种数据库基本都有这项功能,这项功能极大的方便了我们定时处理一些事务,在笔者的web应用开发经验中发现其两大妙用:

一、判断浏览器用户是否在线

  在我们的web应用里经常会遇到用户登录后要长期保持登录状态,系统要能统计当前在线用户数量这样的需求,我们可以使用ajax定时触发调用后台脚本向数据库登录状态表中写入最近一次的脚本调用时间,假设我们每1分钟触发一次ajax脚本,我们不妨称之为心跳,在后台数据库中我们启用一个定时任务,假设也是每1分钟触发,用于检查当前时间距离这个用户最近的活跃时间是否超过1分钟,如果超过,那么说明这个用户的前端没有在指定的时间1分钟间隔内访问后台,这个用户已经离线,将该用户登录状态置为离线。如果没有超过,那么说明用户的心跳一直还在跳动,是活跃用户,没有离线。当然考虑网络延迟和数据库操作延迟时间,我们可以将阈值稍微设置大一些比如1分30秒。通过这个办法可以大致上确定用户在线数量,数据库定时任务的触发间隔越短,用户在线数量越精确,但应考虑数据库的负荷来设置适当的时间间隔。

二、跨域或跨站单点登录

  只要主登录站点将是否登录信息写入数据库,然后一所叙述的技术定时判定用户是否在线来维护用户的登录状态。将该登录信息数据库开放给其他站点访问,由其他站点获取用户的登录信息即可实现单点登录。这是长期保持登录状态的情况,如果要实现用户长时间不动机器就让用户下线的情况,只需要在每个访问后台的程序里包含一个写登录状态表的共同脚本文件即可,如果超出了预定的超时时间就可以将用户下线。

时间: 2024-11-01 17:09:47

【原创】数据库定时任务特性的妙用的相关文章

golang+数据库定时任务

golang+数据库定时任务 项目背景大致如下,楼主在用nodejs写项目时遇到一些需要定时去处理的事情,例如僵尸用户定时清除,一些产品定时下架,邮件定时发送等等! 期初使用nodejs setTimeOut递归嵌套实现,后来发现内存不断飙升,故而放弃,最终改用了性能不错的golang实现 数据库设计 字段名称 含义 id 编号 name 任务名称 create_at 创建时间 type 1. 执行一次 2.循环执行 separate_time 执行间隔 status 执行状态 0.未开始 1.

MySQL数据库新特性之存储过程入门教程

在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用户入门. 存储过程介绍 存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程可由应用程序通过一个调用来执行,而且允许用户声明变量 .同时,存储过程可以接收和输出参数.返回执行存储过程的状态值,也可以嵌套调用. 存储过程的优点 作为存储过程,有以

Atitit.数据库新特性战略规划 mssql sql server 2008 SQL2012 SQL2014

Atitit.数据库新特性 mssql sql server 2008 SQL2012 SQL2014 1. Sql2012 新特性 1 1.1. 增加了Sequence对象. 1 1.2. 新的分页查询语法.offset和fetch 1 1.3. OVER子句的增强和新增一些分析函数. 之前OVER子句是用于RANK,ROW_NUMBER等排名函数,现在OVER子句得到了大大的增强, 可以将OVER子句应用到聚合函数中,也增加了一些分析函数. 2 1.4. 增强的审计功能 2 1.5. 增强的

Mysql数据库四大特性、事物的四个隔离、基本MySQL语句、独立表空间

Mysql数据库四大特性.事物的四个隔离.基本MySQL语句.独立表空间 本人学习mysql的时候感觉笔记有点散所以自己做了一个整合,而且有些概念介绍的太官方了,所以自己根据理解总结了一下.(有不对的请指点!) mysql: sql:关系型数据库:(复杂的关系形数据库). nosql:非关系型数据库:(储存的格式很简单) key,value(memcached),user1:1,user2:2(存在内存里) 事务:一组原子性的SQL查询,或者是一个或多个sql语句组成的独立工作单元:操作要么都执

数据库的特性与隔离级别和spring事务的传播机制和隔离级别

首先数据库的特性就是 ACID: Atomicity 原子性:所有事务是一个整体,要么全部成功,要么失败 Consistency 一致性:在事务开始和结束前,要保持一致性状态 Isolation 隔离性: 对于同一个表的操作,每个事务都是单独的,不会影响其他事务. Durability 持久性: 事务一旦提交,数据库中的数据就是永久的了. 对于以上四种特性中的隔离性,不同的策略会有不同的弊端:脏读,不可重复读,幻读. 脏读: 就是一个事务读取了别的事务执行过程中未提交的数据. 不可重复读: 就是

学习数据库四大特性及事务隔离级别

学习数据库四大特性及事务隔离级别 一丶事务ACID四大特性 A(原子性Atomicity) : 事务是数据库的逻辑工作单位,事务里所有的操作要么全做,要么不做. C(一致性Consistency): 事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态. I(隔离性Isolation): 事务的执行不能被其他事务干扰. D(永久性Durability): 事务一旦提交,它对数据库中数据的改变就应该永久的. 二丶事务的隔离性 MySql存在4种隔离级别. 1.读未提交 Read Unco

(转)数据库ACID特性

转自:http://blog.csdn.net/shuaihj/article/details/14163713 谈谈数据库的ACID 帅宏军 一.事务 定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位. 准备工作:为了说明事务的ACID原理,我们使用银行账户及资金管理的案例进行分析. [sql] view plain copy print? // 创建数据库 create table account( id int primary key not 

数据库四大特性;

数据库的四个特性为ACID,既原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability). 原子性,整个事务是不可分割的,要么全部执行,要么全部不执行: 一致性,事务的执行结构也要与业务的逻辑保持一致: 隔离性,多个事务之间隔离开来,互不影响: 持久性,一旦事务执行完毕,执行后的结果会永久的保存下来.

NewSQL数据库VoltDB特性简介

VoltDB是一个革命性的新型数据库产品,被称作NewSQL数据库.它基于H-Store,号称比当前数据库产品的吞吐量高45倍,同时又具有很高的扩展性.它的特性主要有以下几点: ?  高吞吐.低延迟:通过内存计算,存储过程和串行数据访问实现. ?  可扩展性:自动分区和复制,保证性能和可扩展性. ?  高可用性:同步的多主复制(在VoltDB中叫K-safety). ?  持久化:数据库快照与命令日志(command log)的创新技术组合. 1 高吞吐.低延迟 VoltDB能够提供高吞吐.低延