2013-05-15 84 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';來設置。

相關問題