在mysql中存储时间戳的最佳(性能方面)方法

时间:2013-05-15 00:09:01

标签: java mysql

我有一个java应用程序,它记录事件的时间戳。我遇到的问题是,通常存在大量的数据,并且使用java计算和格式化日期时间对于性能来说太昂贵了。我最终设置了mysql字段以自动使用current_timestamp。这在我的应用程序中获得了巨大的性能提升。

我遇到的一个大问题是,我们有一半的用户拥有托管在别处的mysql服务器,时区设置不同,可能无法更改。

我需要找到一种方法来生成任何一方的时间戳,但如果需要的话,这种方式不会轻易转换为正确的时区。

我之所以考虑使用unix时代,因为在插入数据时不需要任何格式化,它应该不会出现性能问题。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

引用MySQL manual

  

MySQL将TIMESTAMP值从当前时区转换为UTC   存储,并从UTC返回到当前时区进行检索。   (...)[当前]时区可以基于每个连接进行设置   [使用time_zone系统变量]。

我建议坚持使用内置的TIMESTAMP类型。可以通过发布(例如,对于UTC + 2)SET SESSION time_zone = '+2:00';来设置当前会话的时区。