分庫分表實踐

2021-07-05 12:50:32 字數 1156 閱讀 2703

1、為什麼要分庫分表?

資料庫中的資料量不一定是可控的,在未進行分庫分表的情況下,隨著時間和業務的發展,表中的資料量會越來越大,相應地,資料操作,增刪改查的開銷也會越來越大;另外乙個db所能承載的資料量、資料處理能力都會成為瓶頸。

2、 分庫分表實施策略

分庫分表有垂直切分和水平切分兩種

1)垂直切分即將表按照功能模組、關係密切程度劃分,並部署到不同的庫上。例如,商品資訊和交易資訊適合單獨存放。

2)水平切分即當乙個表中資料量過大時,可以把該錶的資料按照某種規則,例如userid雜湊,進行劃分,然後儲存到多個結構相同的表,和不同的庫上。

水平切分實踐**:userid為10位數字字串,第8位表述分表位,第9位表示分庫位。

public class daorouteinterceptor implements methodinterceptor 

/*** parser tableindex with userid

* * @param userid unique id of user

* @return id of table

*/public static int parsetableindexbyuserid(string userid)

/*** parser dbindex with userid

* * @param userid unique id of user 

* @return id of db

*/public static int parsedbindexbyuserid(string userid)

}

配置***

切換所有分庫分表計算邏輯放在dao的父類basedao的routeparser方法裡。配置多資料來源,根據表id和庫id選擇資料來源的邏輯也放在basedao裡。子類dao呼叫父類方法,***攔截父類的分庫分表方法。

***配置如下:

class="org.springframework.aop.framework.autoproxy.beannameautoproxycreator">

daorouteinterceptor

basedao

class="com.test.interceptor.daorouteinterceptor" />

分庫分表落地與實踐

題記 本篇部落格主要是對美團訂單系統分庫分表系統的一些解析和加入了自己的理解,純粹是做筆記,長知識吧,不會構成侵權吧 緣由 解決辦法 2 範圍切分 按照範圍來切分,比如說按照時間範圍和id的範圍來進行切分 比如說使用者的id是0 1000000的,請到第乙個資料庫中去查詢,優點是每張表的大小是可以控...

分庫分表最佳實踐大總結

一 隨著企業業務的增長,訪問量和使用者等資料的增加,傳統的關聯式資料庫已經不能滿足需求 分表分庫就成了節省成本 和良好擴充套件性的必然選擇 網上也有很多開源的分表分庫的軟體,也公司自己開發實現 而終其原理和步驟都無外乎三步 即首先sql解析路由,再根據路由確定分片,然後結果集合並 所遇到的分表分庫的...

分庫分表最佳實踐大總結

一 隨著企業業務的增長,訪問量和使用者等資料的增加,傳統的關聯式資料庫已經不能滿足需求 分表分庫就成了節省成本 和良好擴充套件性的必然選擇 網上也有很多開源的分表分庫的軟體,也公司自己開發實現 而終其原理和步驟都無外乎三步 即首先sql解析路由,再根據路由確定分片,然後結果集合並 所遇到的分表分庫的...