2013-05-15 81 views
1

我有一个Java应用程序,记录事件的时间戳。我面临的问题是经常有大量的数据,并且使用java计算和格式化日期时间对于性能而言代价太高。我最终设置了mysql字段以自动使用current_timestamp。这在我的应用中获得了巨大的性能提升。最佳(性能明智)的方式来存储在mysql中的时间戳

我遇到的最大问题是,我们的一半用户有其他地方托管的mysql服务器,并且时区设置不同,可能不会更改。

我需要找到一种方法来生成任何一方的时间戳,但是如果需要的话,这种方式对于性能轻松转换为正确的时区是没有意义的。

我考虑过使用unix时代代替,因为在插入数据时不需要任何格式,所以应该少一些性能问题。

有没有更好的方法?

+2

一个时代的生成速度相对较快,它是一个时区中立的时间瞬间,可以轻松地与其他时刻进行比较(小于,超过),而且对于相对近的时间,算术运算很简单。听起来不错。 –

回答

0

引述MySQL manual

MySQL的TIMESTAMP值从当前时区为UTC转换为 存储和回从UTC到检索当前时区。 (...)可以在每个连接的基础上设置[当前]时区 [使用time_zone系统变量]。

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

相关问题