More  

小編的世界 優質文選 資料

Mysql -怎麼選擇datetime、timestamp、int存儲時間戳?


2021年11月18日 - 資料小編  
   

程序那點事08:40優質科技領域創作者

背景

數據表都很可能會有一兩個字段需要保存日期時間數據,那應該用什麼 Mysql 類型來保存呢?前面講過 datetime、timestamp、int 的方式來保存日期時間

Mysql - 如何決定用 datetime、timestamp、int 哪種類型存儲時間戳?

date、datetime、timestamp 的區別

本篇文章會對 datetime、timestamp、int 進行比較,然後對一些典型的查詢進行基准測試,來決定什麼情況下使用哪種數據類型

整體對比表

加粗是缺點

接下來對 int、timestamp、datetime 的性能進行基准測試

這裏直接展示結果,不展示過程了(因為只需要關注結果即可)感興趣可以看:https://vertabelo.com/blog/這裏會使用 sysbench、mysqlslap 兩個性能測試工具

測試一:選擇日期範圍內的值

下列查詢均是從 1,497,421 個可用數據中返回 75,706 行

datetime

timestamp

int(使用 FROM_UNIXTIME 轉換函數)

int

結論兩個基准測試工具都表明 datime 比 timestamp 和 int(使用轉換函數) 快但是 datetime 並不比直接用 int 數字快

測試二:選擇星期一的數據下列查詢均是從 1,497,421 個可用數據中返回 221,850 行datetime

timestamp

int(使用 FROM_UNIXTIME 轉換函數)

結論兩個基准測試工具都表明 datime 比 timestamp 和 int(使用轉換函數) 快但在這個測試中,int(使用轉換函數)比 timestamp 更快

測試三:統計星期一的數據量下列查詢均是從 1,497,421 個可用數據中返回 1 行datetime

timestamp

int(使用 FROM_UNIXTIME 轉換函數)

結論 兩個基准測試工具都表明 datime 比 timestamp 和 int(使用轉換函數) 快但在這個測試中,int(使用轉換函數)比 timestamp 更快

最終結論使用 datetime 應該是絕大多數場景下的最佳選擇,因為它更快它可讀性更好,無需轉換沒有時區切換的問題它僅比 timestamp 多使用 1 個字節,但存儲的時間範圍卻非常大 做抉擇如果只是想存儲簡單的 unix 時間戳,那麼使用 int 是最佳選擇,因為它非常快,和使用普通數字一樣而如果要根據時區進行存儲日期時間,那麼就應該使用 timestamp否則絕大多數情況下推薦使用 datetime

本文作者: 小菠蘿測試筆記本文鏈接: https://www.cnblogs.com/poloyy/p/15547599.html

  大家在看