在大型電商網站中,隨着業務的增多,數據庫中的數據量也是與日俱增,這時候就要將數據庫進行分庫分表了。下面分析下以下幾個問題:
1、數據庫如何實現分庫分表?
兩種方案:垂直和水平。
垂直拆分:根據業務進行拆分,比如可以分庫訂單數據庫,商品數據庫,支付數據庫等。
水平拆分:即根據表來進行分割:比如user表可以拆分為user0,、user1、user2、user3等等
2、分庫分表后如何實現聯合查詢呢?
可以使用第三方的數據庫中間件來實現,比如:mycat、shadinng-jdbc
具體原理:
當客戶端發出一條sql指令時:比如select * from user
此時中間件會將此語句根據有n個子表,拆分成n條語句:即select * from user1,select * from user2,select * from user3等多條sql語句,去子表中查詢。
然后將結果返回給中間件,中間件進行匯總返回給客戶端。而這些子語句是同時執行的,所以查詢效率非常高。

3、為什么分庫分表后可以提高查詢效率?
因為采用了第三方中間件多線程合並查詢。
