小編的世界 優質文選 資料
字體大小:
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