[SQL ] 依日期切 partition

作者: averywu (看文不要只會用橫的看)   2021-01-06 17:35:35
資料庫名稱: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
作者: billy522 (過好每一天)   2021-01-06 19:52:00
依照日期(logTime)BY天去切,logTime要加在PK中第一次切表先定義好,之後寫SP每日執行切表排程

Links booklink

Contact Us: admin [ a t ] ucptt.com