Ⅰ 給小白演示 分庫分表案例
受群里小夥伴之邀,搞一個分庫分表案例,這樣讓很多沒用過分庫分表的心裡也有個底,不然永遠看到的都是網上的各種概念和解決方案性的文章。
由於用戶表過岩兆察於龐大,採取相關SQL優化,還是不能滿足,所以現對其進行做分庫分表。
資料庫: my-sharding
資料庫表: t_user
建表語句如下:
關於資料庫分庫分表通常有兩種方案:
下面我們來演示水平拆分,大致思路:
加入有2000萬條數據,那麼為了方便演示,我們就暫定分為五個庫,每個資料庫對應五個表。
五個資料庫:
每個資料庫有五張表:
建表語句如下:
使用技術棧: JDK8 + MySQL + Spring Boot + Mybatis + Shardingsphere + Druid
maven 相關依賴:
配置文件相關配置如下:
分庫分表的兩個分片類:
下面是業務部分代碼,先看 UserMapper.xml 內容:
UserMapper 介面:
為了更好地演示,我這里加入了 controller 層和 service 層,這也是大家平常開發套路。
service 層代碼如下:
controller層代碼如下:
最後是項目的啟動類:
啟動項目,啟動成功:
下面我們來演示一下新增數據和查詢。
先來添加數據到資料庫中,這里使用的是IDEA中restful工具:
後台日誌:
再查看資料庫表中:
到此,我們的數據依舊落庫,下面我們猜棚來演示一下數據查詢。
瀏覽器里輸入:
返回數據:
後台日誌:
從日誌和返回結果可以看出,已經為我們正確的選擇到對應的資料庫和表了,這樣,一個分庫分表的查詢就成功了。
本文沒有太多的概念,直接使用案例演粗茄示。相關概念性的文章,還有分庫分表解決方案的文章,網上一堆堆的,感興趣可以自行查閱。