Rails':timestamp
列類型謊言;它實際上只是:datetime
的別名。使ActiveRecord/Rails使用實際的MySQL TIMESTAMP列
我正在使用mysql,我想用實際的unix-timestamp TIMESTAMP
列。
a)有沒有一種很好的方法來設置它,除了使用SQL來創建列外? b)請問ActiveRecord能否正確處理它(例如,在必要時轉換爲Time
,接受unix時間戳Integer
作爲輸入等)??????????????????????????????????我應該期望處理什麼問題,以及在哪裏?
爲什麼:
速度。這是一個非常活躍的表,它彙集了已使用unix時間戳的外部數據源。轉換爲日期時間(或者甚至首先轉換爲數據庫字符串,這通過2
gsub
s)佔用了大部分導入時間。否則我可能只是做一個便宜的電話。時區。我不想要他們。我希望它存儲時區 - agnostically;處理時區是一種痛苦,除了在個人用戶顯示之前的最後階段,與我的需求完全無關。數據本身並不需要知道它記錄的時區。
大小。這是一張大桌子。 TIMESTAMP is half the size of DATETIME.
是的,我仍然會做代碼updated_at
計算,而不是MySQL的。這部分不是瓶頸。
爲什麼你的 '爲什麼不' 是錯誤的(先發制人,以示我不要求noobish原因:-P):
- 「但是,TIMESTAMP自動更新」:That's only true by default, and can be easily switched off.
- 我實際上不使用Rails,只是ActiveRecord。
- 是的,這是基於actual profiling data;我不是早期優化。
ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter#quote
(在Quoting#quoted_date
[如果通過Time
]或Mysql2Adapter#quote_string
[如果preconvertingto_s(:db)
])實際上是我的刮板中CPU消耗最多的部分。我想擺脫它。
它爲什麼重要,如果你正在使用Rails(#2)? (我使用Rails,但考慮使用時間戳來節省空間。) – 2013-11-21 18:50:28