您的位置:首页 > 数据库

如何更快的获取数据库时间——数学公式是最好的算法

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: