`
lxy2520
  • 浏览: 6080 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

 
阅读更多

获取数据库时间

林小应

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_AdbTime_A ,

vmTime_A - dbTime_A =ΔT

由此推出 dbTime_A = vmTime_A -ΔT

因为vmTimedbTime是同步变化的,所以 dbTime = vmTime -ΔT

现在我们已经得到了ΔT,再获取dbTime的话,只需要根据ΔT vmTime计算出来就可以了

QQ:346420558

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics