為什么分庫分表
- Mysql單表數(shù)據(jù)最多可達(dá)到10億數(shù)據(jù),業(yè)界公認(rèn)Mysql單表容量在1千萬以下是最佳狀態(tài),因?yàn)榇藭r(shí)的BTREE索引樹高度在3-5之間
- 單數(shù)據(jù)庫實(shí)例的IO,CPU都有極限
什么是分庫分表
1.把一個(gè)表的數(shù)據(jù)按規(guī)則分?jǐn)偟蕉鄠€(gè)表存儲(chǔ)
主要難點(diǎn)問題
1.分布式事務(wù)問題
2.夸庫join問題
3.排序,分頁,聚合問題
4.多數(shù)據(jù)源管理
現(xiàn)有思路
1.客戶端分片
應(yīng)用層實(shí)現(xiàn):在業(yè)務(wù)代碼中判斷使用的具體表
重寫JDBC操作
定制ORM框架
2.代理端分片
在應(yīng)用和數(shù)據(jù)庫之間增加一個(gè)代理服務(wù)器
3.支持事務(wù)的分布式數(shù)據(jù)庫分片
成熟的分布式數(shù)據(jù)庫
現(xiàn)有開源框架
1.sharding-jdbc:客戶端
2.MyCat:代理端