資料量大了需要考慮使用分表來減輕單錶壓力,提公升查詢效能。當然也有其他舉措,比如讀寫分離、cluster等,此文重點講分表的做法。
分表有幾種做法?
1. 分表的原理:把常用字段如id或name取hash值,根據hash值放在不同的表中。
當然也有求餘的方法,這個可以多種方法來實現。
這個方法使用於論壇,發貼表,資料量大時,可採用此策略。比如1億條記錄,建256張表,每個表hash進40萬記錄,每個表壓力明顯很小。
2. 使用merge引擎來實現分表:
原理,建若干個分表,再建乙個合併表存所有資料,全部查詢時從合併表時,分開查詢時從分表中查詢。
注意:在使用分表時,每個表的id不能使用自增長,而由專門的服務來提供,比如由乙個表專門處理提供id業務,此表統一對外提供id,所以表需要新增記錄時,到此表來取唯一的id。
mysql 分表策略
mysql單錶資料量巨大時,查詢效能會很差,經常遇到的是儲存日誌相關的資料會每天產生大量的資料。這裡提供單錶拆分成多表儲存的三個思路 預先建立好n張表,記錄按id取模儲存到相應的表中。優點 簡單粗暴 缺點 受id模式,預先建立好錶的數量,不易擴充套件和改動。按id查詢方便,但按時間查詢就比較麻煩。資...
mysql 分表,拆分策略
一 時間結構 1 平板式 表類似 article 200901 article 200902 article 200903 用年來分還是用月可自定,但用日期的話表就太多了,也沒這必要。一般建議是按月分就可以。這種分法,其難處在於,假設我要列20條資料,結果這三張表裡都有2條,那麼業務上很有可能要求讀...
mysql分表策略 01
第四個問題 一張表中有都有50億條資料了,這個時候該咋辦?超過1000w一張表就要做分表了 建表 就是比如user 01,user 02 假設建立了n張同樣的表 如何做crud?在redis中儲存乙個id,每次插入一條資料,就自增 每次插入資料之間,先取出id,然後 id n 0,1,n 1 根據取...