收藏本站

電腦請使用 Ctrl + D 加入最愛
手機請使用 收藏
關閉

小編的世界 優質文選 資料

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

  大家在看    
Linux導入、導出 MySQL數據庫命令

Linux導入、導出 MySQL數據庫命令

MySQL與Redis緩存一致性問題

MySQL與Redis緩存一致性問題

圖文詳解!吃透 MySQL中處理分層數據的模型手

圖文詳解!吃透 MySQL中處理分層數據的模型手

展會|萬裏數據庫受邀2021DTCC 展現新一代

展會|萬裏數據庫受邀2021DTCC 展現新一代

查詢速度提升10倍!StarRocks在格洛博電

查詢速度提升10倍!StarRocks在格洛博電

MySQL存儲過程小玩一下

MySQL存儲過程小玩一下

新同事上來就優化了一遍MySQL索引和查詢,老板

新同事上來就優化了一遍MySQL索引和查詢,老板

MySQL第1課:認識數據庫並安裝MySQL數據

MySQL第1課:認識數據庫並安裝MySQL數據

MySQL:互聯網公司常用分庫分表方案匯總

MySQL:互聯網公司常用分庫分表方案匯總

雲呐運維一體機|Mysql數據庫監控管理系統

雲呐運維一體機|Mysql數據庫監控管理系統