1. 程式人生 > >當一個表的數據量過大,引起存儲不夠或者查詢較慢問題時,應該怎麽辦?

當一個表的數據量過大,引起存儲不夠或者查詢較慢問題時,應該怎麽辦?

查詢 分類 怎麽辦 分享 bubuko 常用 分表 alt 序列

縱向切分表

將一個表按照字段切分成兩個或者多個表,將常用的字段切分到一張表中,分布式存儲

橫向切分

有兩種方式,一是按照特定的數據量,將表切分成不同的表(表結構一致)來存儲,新數據插入到新表中,新表的數據量達到約定拆分的數據量時,再建立新表存儲;二是按照某種特定的規則來切分表,然後分布式存儲,如按照不同的模塊分類來切分表。

第二種方式要註意防止主鍵沖突,通常采用snowflake-64bit算法即:

技術分享圖片

但是也存在隱患,snowflake產生的id是有可能重復的,機器id和序列號可以做到不重復,但是同一臺上的時間戳不能保證不重復,如網絡延遲、抖動,這是個無解的問題

當一個表的數據量過大,引起存儲不夠或者查詢較慢問題時,應該怎麽辦?