看板 Database 關於我們 聯絡資訊
資料庫名稱: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
billy522: 依照日期(logTime)BY天去切,logTime要加在PK中 01/06 19:52
billy522: 第一次切表先定義好,之後寫SP每日執行切表排程 01/06 19:53