mysql 分表策略

2022-03-04 15:08:03 字數 815 閱讀 8818

mysql單錶資料量巨大時,查詢效能會很差,經常遇到的是儲存日誌相關的資料會每天產生大量的資料。

這裡提供單錶拆分成多表儲存的三個思路:

預先建立好n張表,記錄按id取模儲存到相應的表中。

優點:簡單粗暴

缺點:

受id模式,預先建立好錶的數量,不易擴充套件和改動。

按id查詢方便,但按時間查詢就比較麻煩。

資料量大時遷移會影響效能。

例如:表test 拆分到100張表中

insert into test select * from test where id%100=

insert into test_yyyymm (field1,field2....) select field1,field2....from test where filed3 >= "yyyymmdd" and filed3 <= "yyyymmdd+1";  

優點:按時間好分類統計。

缺點:特定id查詢不方便,資料量大時遷移會影響效能。

先複製test 表的結構建立乙個臨時表:

create table test_tmp like test

rename table test to test_yyyymm,test_tmp to test;

在rename期間表是被鎖死的,所以不用擔心rename時資料丟失!

注意,按月份儲存,則每月1號定時執行。

當然也可以變換拆分的方式,自由發揮了!

優點:快捷,無需資料匯入匯出。

Mysql 分表策略

資料量大了需要考慮使用分表來減輕單錶壓力,提公升查詢效能。當然也有其他舉措,比如讀寫分離 cluster等,此文重點講分表的做法。分表有幾種做法?1.分表的原理 把常用字段如id或name取hash值,根據hash值放在不同的表中。當然也有求餘的方法,這個可以多種方法來實現。這個方法使用於論壇,發貼...

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 根據取...