2011-06-24 34 views
1

我將記錄處理REST請求所需的時間,並且我不確定哪種數據類型對於列最適合。時間差將以毫秒爲單位,我不會期望它小於1ms,但可能是幾秒鐘(希望它不會更高!)。用於在MySQL中存儲microtime差異的最佳數據類型

Best way to store span on time in a MySQL database?非常相似,但具有更高的精度。

我相信我有兩個選擇:時間戳或整數。時間戳具有微秒的精度,整數可以具有我需要的任何實際精度(將時間差乘以Y * 1000)。

的時間差將PHP通過

$start = microtime(true); 
// do something 
$runtime = microtime(true) - $start; 

的數據類型將是最好的保存在MySQL在毫秒級的時間差來計算?

這種情況下,時間戳和整數的優缺點是什麼?

回答

4

時間戳用來存儲一個時間點,而不是一段時間。 TIMESTAMP不存儲毫秒,也不會存儲TIME。帶一個整數字段。

我還發現了一個類似的問題:Storing microseconds in MySQL: which workaround?

+0

由於這是分析,我建議一個bigint,萬一請求掛起太多。 :-) –

+0

謝謝。我完全錯過了它實際上不會存儲毫秒。 –

+0

因爲microtime(true)返回一個float/double,整數字段不會丟失一些精度嗎? – relipse

3

時間戳不會削減它。

TIMESTAMP列以與DATETIME 列相同的格式顯示。換句話說,顯示寬度固定爲19個字符, ,格式爲'YYYY-MM-DD HH:MM:SS'。

即使您做了幾行來捕捉「時刻」來做兩者的增量(差異),但最好的精度只有秒。

我會在整數。這樣你可以在幾秒內完成multipliers。例如,0.1毫秒可以在整數列中存儲爲「1」。因爲整數只能存儲在一個整數列中,所以通過使用一個硬乘法器規則,可以向後工作以確定毫秒。

+0

謝謝。我完全錯過了它實際上不會存儲毫秒。 –

相關問題