[SQL ] 依日期切 partition
資料庫名稱:MySQL
資料庫版本:5.6
內容/問題描述:
一直以來都是用日期去切表,因為資料大約每天成長六百萬筆。
資料會大量寫入,每五分鐘寫一次,一天寫288次,每次約二萬筆左右。
之後就是不定期查詢,不會有更新的事發生。
用日期來切表我是用 data_yyyymmdd 去當表名,這樣做有個大問題就是
當用戶要查詢的日期區間很大時,組SQL會組的很長很長(UNION ALL)。
想到也許可以用 partition 來切,但就我所知 partition 要先定義好切成幾
個,然後條件是什麼。
因為我的資料是每天都有,主要也是依日期去查資料,但是我不可能每天都去
改 partition 的設定。用其它的 key 來切的話,因為不管怎麼切,每個分區
的表資料量也不可能少到哪裡去,主要的 key 除了日期還有就是設備的 id
但設備的 id 也才三百來個,用設備id切每天每個 partition 成長數是二萬,
大約一年就破百萬筆了。
我的表資料結構如下:
deviceId : 1~ 30 而且有可能新增,是 index
deviceMachine : 不可做 key,資料沒有一致性。
deviceIp : 不可做 key ,是 char(15) 記錄IP用。
logTime : datetime 是 index
crc : 不可做 key , 是 char (50) 資料是 csv 資料且沒有一致性
devicePwr : 不可做 key , 是 char (50) 資料是 csv 且沒有一致性
deviceSNR : 不可做 key ,是 char (50) 資料是 csv 且沒有一致性
在這種情況下有什麼方法依日期去切表呢?
或是用什麼方法切比較適合呢?
頭好大QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.105.105.227 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1609925737.A.262.html
推
01/06 19:52,
3年前
, 1F
01/06 19:52, 1F
→
01/06 19:53,
3年前
, 2F
01/06 19:53, 2F
Database 近期熱門文章
PTT數位生活區 即時熱門文章