mysql分表策略 01

2021-10-01 22:51:31 字數 842 閱讀 6654

第四個問題: 一張表中有都有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條,那麼業務上很有可能要求讀...