如何更快的获取数据库时间——数学公式是最好的算法
2013-03-06 17:41
323 查看
获取数据库时间
林小应1. 问题描述
我们在应用程序中会用到当前时间:JVM虚拟机的时间 和 数据库的系统时间 两种 。虚拟机时间: System.currentTimeMillis(); 或者new Date()。
获取系统时间:select sysdate from dual;
而在应用程序中调用上面的sql,容易造成数据库拥塞。而且其本身效率也很低,加上事务的开销,一次访问大约在3~4ms左右。
2. 期望
我们希望获取系统时间,每次访问低于0.1ms。就像在Java代码中调用System.currentTimeMillis();一样简单、快捷。3. 修改方案
数据库时间 =主机时间–主机、数据库时间差值
即
dbTime
= vmTime –
ΔT
我们利用以上公式获取当前数据库时间。只需要在内存中记录一下“主机、数据库时间差值”即可。
原理如下:
系统时间分为JVM主机时间 vmTime、数据库系统时间dbTime。假设我们某一时刻A查询出两个时间分别
vmTime_A、dbTime_A ,
则 vmTime_A - dbTime_A =ΔT
由此推出 dbTime_A = vmTime_A -ΔT
因为vmTime、dbTime是同步变化的,所以 dbTime = vmTime -ΔT
现在我们已经得到了ΔT,再获取dbTime的话,只需要根据ΔT和 vmTime计算出来就可以了
QQ:346420558
相关文章推荐
- Hibernate如何获取Informix数据库当前时间
- 数据库——mysql如何获取当前时间
- mysql 获取时间日期后,如何在数据库里去掉小数点后面的零
- 【数据库】【算法】从一串数据中获取符合某个条件的时间区间
- 数据库——mysql如何获取当前时间
- mysql 如何获取数据库当前时间
- java 把string数据转换成date数据存入mysql的问题,如何获取当前时间date存入数据库
- oracle 获取数据库时间
- Android如何获取APP启动时间
- 【HR小时制】如何获取Android系统时间的小时制
- 如何获取精确到毫秒的当前时间以及 日期与时间的相互转化
- navicat如何让datetime类型自动获取当前时间
- 算法-如何计算时间复杂度?
- 利用shell 生成 hadoop 实验大数据 以及如何获取时间戳
- 【连载】关系型数据库是如何工作的?(2) - 时间复杂度
- 如何利用C++的time头文件获取系统时间
- 如何在数据库中获取随机的记录
- 如何获取EDM的数据库邮件地址列表
- SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
- 数据结构与算法-如何计算时间复杂度