大資料分庫 分表設計(mysql)

2021-07-05 07:52:44 字數 868 閱讀 6744

1.應用場景:

使用mysql資料庫做查詢,當資料量超過200w時,查詢數度受到限制,此時為了避開這一瓶頸,我們採取分庫分表的資料庫設計思想,將資料按照一定規律儲存至資料庫,常用的方式如下:

1.1使用時間作為依據分庫/分表

例如,我們可以將資料按照月份儲存在表中,例如:translate_2015_01,translate_2015_02.......以此達到分表、分庫的目的;

1.2 使用數字作為分庫,分表標準(取餘)

我們經常會定義某個欄位為自增長或者某個隨機數,或者某個特定編碼,利用這個編碼,我們將其存放到不同的表中,例如,我們想要定義30張表存我們獲得的資料,  第乙個值為1,我們用1%30=1,由此可知該資料放在第一張表,又例如500%30=20,該資料放入第20張表。

1.3使用md5區分(上傳檔案等)

在上傳檔案過程中,將檔名的md5值取前3位作為上傳檔案儲存的資料夾名稱,這樣便將上傳的檔案儲存在了3^3=27個資料夾中,方便下次尋找到該檔案;

2.使用分表,分庫不利方面:

不利於做資料的統計操作,需要跨表跨庫;增加設計的複雜度;

分庫分表的解決方案

spring + ibatis 的多庫橫向切分簡易解決思路

sql server分割槽表方案

mysql分表分庫實現 MySql分表分庫思路

一.資料庫瓶頸 1.1io瓶頸 第一種 磁碟讀io瓶頸,熱點資料太多,資料庫快取放不下,每次查詢時會產生大量的io 分庫和垂直分表 第二種 網路io瓶頸,請求的資料太多,網路頻寬不夠 分庫 1.2cpu瓶頸 第一種 sql問題,如sql中包含join,group by,order by,非索引字段條...

MySQL範圍分表分庫 mysql 分表分庫策略

唯一id的生成 下面列舉幾種常見的唯一id生成方案,需要滿足兩大核心需求 1.全域性唯一 2趨勢有序 1.用資料庫的auto increment 自增id 來生成,每次通過寫入資料庫一條記錄,利用資料庫id自增的特性獲取唯一,有序的id。優點 使用資料庫原有的功能,相對簡單 能夠保證唯一 能夠保證遞...

mysql 分庫分表實戰 MySQL分庫分表實戰

為什麼要分庫分表 在大型 中,當使用者量以及使用者產生的業務資料量達到單庫單錶效能極限時,為了支撐業務可持續發展,對於重要的核心業務必然要進行分庫分表來儲存業務資料。對於非核心業務產生的大量資料,例如爬蟲爬取的資訊,論壇產生的資料等,可以考慮把資料儲存在像mongodb這樣的nosql儲存裡面,這些...