基於Mysql資料庫億級資料下的分庫分表方案

2021-09-25 21:08:55 字數 806 閱讀 2335

目前網際網路上有許多的版本,比較知名的一些方案:

以查詢索引列進行分割槽,例如,對於流水表a,查詢需要根據手機號和批次號進行查詢,所以我們在建立分割槽的時候,就選擇以手機號和批次號進行分割槽,這樣設定後,查詢都會走索引,每次查詢mysql都會根據查詢條件計算出來,資料會落在那個分割槽裡面,直接到對應的分割槽表中檢索即可,避免了全表掃瞄。

建立乙個原表一模一樣的臨時表1 create table test_a_serial_1 like test_a_serial;

將原表命名為臨時表2 alter table test_a_serial rename test_a_serial_;

將臨時表1改為原表 alter table able test_a_serial_1 rename able test_a_serial; 此時,當日流水表就是一張新的空表了,繼續儲存當日的流水,而臨時表2則儲存的是昨天的資料和部分今天的資料,臨時表2到名字中的date時間是通過計算獲得的昨日的日期;每天會產生一張帶有昨日日期的臨時表2,每個表內的資料大約是有1000萬。

將當日表中的歷史資料遷移到昨日流水表中去 這樣的操作都是用的定時任務進行處理,定時任務觸發一般會選擇凌晨12點以後,這個操作即時是幾秒內完成,也有可能會有幾條資料落入到當日表中去。因此我們最後還需要將當日表內的歷史流水資料插入到昨日表內;insert into test_a_serial_(cloumn1,cloumn2….) select(cloumn1,cloumn2….) from test_a_serial where left(create_time,8) > concat(date); commit;

end

mysql資料庫實現億級資料快速清理

今天收到磁碟報警異常,50g的磁碟被撐爆了,分析解決過程如下 1.進入linux伺服器,檢視 mysql 資料夾中各個資料庫所佔的磁碟空間大小 看到了嗎,光olderdb就佔了 25g2.用sqlyog登入 mysql 資料庫,檢視資料庫各個表的占用空間情況 select concat table ...

mysql資料庫實現億級資料快速清理

今天收到磁碟報警異常,50g的磁碟被撐爆了,分析解決過程如下 1.進入linux伺服器,檢視mysql資料夾中各個資料庫所佔的磁碟空間大小 看到了嗎,光olderdb就佔了25g 2.用sqlyog登入mysql資料庫,檢視資料庫各個表的占用空間情況 select concat table sche...

mysql億級資料遷移

背景 mysql5.6 分庫分表 跨資料庫例項,要求線上遷移 切換功能 檢視各資料庫占用磁碟空間大小 select table schema,concat truncate sum data length 1024 1024,2 mb as data size,concat truncate sum...