第四個問題: 一張表中有都有50億條資料了, 這個時候該咋辦?超過1000w一張表就要做分表了
建表:就是比如user_01,user_02…
假設建立了n張同樣的表;
如何做crud?
在redis中儲存乙個id,每次插入一條資料,就自增;
每次插入資料之間,先取出id,然後
id%n = 0,1,...,n-1
根據取模的值選取到編號為x的表。
然後把新資料插入到 user_x
id%1000 = 0···1
這個1000是表的數量
開始時建立10張表, 這個就是 id%10
開始時建立100表,這個就是 id%100
那怎麼查詢呢?
select column_01 from table_01 where =***
update table table_01 set column_01=*** where column_01=yyy
delete * from table_01 where column_03 like '%abc%'
都要寫迴圈。
都要迴圈,執行效率的問題, 不是非常的低下嗎?
本來只有一條查詢語句的, 如果有100張表, 現在要用100條查詢語句。
本來乙個事務執行乙個語句就行了
現在事務要執行100條語句。
結論:這樣分表查詢效率是很低的。
Mysql 分表策略
資料量大了需要考慮使用分表來減輕單錶壓力,提公升查詢效能。當然也有其他舉措,比如讀寫分離 cluster等,此文重點講分表的做法。分表有幾種做法?1.分表的原理 把常用字段如id或name取hash值,根據hash值放在不同的表中。當然也有求餘的方法,這個可以多種方法來實現。這個方法使用於論壇,發貼...
mysql 分表策略
mysql單錶資料量巨大時,查詢效能會很差,經常遇到的是儲存日誌相關的資料會每天產生大量的資料。這裡提供單錶拆分成多表儲存的三個思路 預先建立好n張表,記錄按id取模儲存到相應的表中。優點 簡單粗暴 缺點 受id模式,預先建立好錶的數量,不易擴充套件和改動。按id查詢方便,但按時間查詢就比較麻煩。資...
mysql 分表,拆分策略
一 時間結構 1 平板式 表類似 article 200901 article 200902 article 200903 用年來分還是用月可自定,但用日期的話表就太多了,也沒這必要。一般建議是按月分就可以。這種分法,其難處在於,假設我要列20條資料,結果這三張表裡都有2條,那麼業務上很有可能要求讀...