現在連接6台mysql數據庫,路由分庫算法是根據id的hash值%6,根據值不同分別存入6台數據庫。現在不知道如何做分頁查詢列表?
先決原則:
數據分庫時盡量選擇索引字段,最好此字段還是唯一的。
數據分庫時建表時結合業務,選擇where后查詢比較頻繁的字段。
解決方案泛泛之談:
1、直接使用跨庫的多表聯合查詢。
不建議。
2、向6台數據庫server均發送一個查詢請求,然后對所有查詢結果進行匯總,再處理分頁邏輯。
時間換空間。取20條有序數據,6台服務器各取20條,匯總排序返回。
3、建立一個總數據庫,只負責維護主鍵和必要的索引,以供分頁查詢。
耦合業務,需要統計哪些sql需要維護哪些表的哪些字段。
可能會有冗余數據產生,需要同步冗余數據開銷。
4、找一些靠譜的中間件,對內部實現封裝,對外部實現透明。
譬如阿里的中間件,mycat等,不過挺難找到的。