Rails ':timestamp
カラムタイプが嘘です。実際には:datetime
のエイリアスです。ActiveRecord/Railsに実際のmysql TIMESTAMPカラムを使用させる
私はmysqlを使用しています。実際のUNIXタイムスタンプTIMESTAMP
カラムを使用したいと思います。
)これを設定するには、SQLを使用して列を作成する以外にも、いい方法がありますか?
b)ActiveRecordは適切に対応しますか(たとえば、必要に応じてTime
に変換し、入力としてUnixタイムスタンプInteger
を受け入れるなど)?私は何をしなければならないと思いますか、そしてどこで?
理由:
スピード。これは、すでにUNIXのタイムスタンプを使用している外部のデータソースを集約している非常にアクティブなテーブル用です。 datetimeに変換する(または最初にdbの文字列に変換すると、2
gsub
を通過します)、そのインポート時間の大部分を使います。私はそうでなければちょうど安価なInteger#to_s
呼び出し汚れをやっている可能性があります。タイムゾーン。私は彼らを望んでいない。私はそれがタイムゾーンに保存されてほしいと思っています。タイムゾーンを扱うことは苦痛であり、個々のユーザーが表示される前の最後の段階を除いて、私のニーズに完全に無関係です。データそのものは、記録されたタイムゾーンを知る必要はありません。
サイズ。それは大きなテーブルです。 TIMESTAMP is half the size of DATETIME.
はい、私はまだMySQLやコードにupdated_at
計算をやっていないことになります。その部分はボトルネックではありません。
あなたの 'なぜ'(私は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
[事前変換の場合はto_s(:db)
])は、実際にはスクレイパーのCPUを消費する最も多くのセクションです。私はそれを取り除きたい。
あなたがRailsの(#2)を使用している場合、なぜそれは問題でしょうか? (私はRailsを使用していますが、スペースを節約するためにタイムスタンプを使用することを検討しています) –