1. 程式人生 > >資料庫水平切分的實現原理—分庫、分表、讀寫分離、負載均衡、主從複製

資料庫水平切分的實現原理—分庫、分表、讀寫分離、負載均衡、主從複製

水平切分資料庫的目的 其主要目的是為突破單節點資料庫伺服器的 I/O 能力限制,解決資料庫擴充套件性問題

 通過一系列的切分規則將資料水平分佈到不同的DB或table中,在通過相應的DB路由或者table路由規則找到需要查詢的具體的DB或者table,以進行Query操作

                         水平切分資料庫:可以單臺機器的負載,可以最大限度降低宕機引起的資料損失

                         負載均衡策略:可以降低單臺機器的訪問負載,降低宕機的可能性。

                         叢集方案:解決因為宕機帶來的單點資料庫不能訪問的問題

 水平切分資料庫的三種形式:

           1.號段分割槽 

    user_id為1~1000的對應DB1,1001~2000的對應DB2,以此類推;

     優點:可部分遷移

     缺點:資料分佈不均

           2 hash取模分割槽

                            對user_id進行hash(或者如果user_id是數值型的話直接使用user_id 的值也可),然後用一個特定的數字,

                    比如應用中需要將一個數據庫切分成4個數據庫的話,我們就用4這個數字對user_id的hash值進行取模運算,

                    也就是user_id%4,這樣的話每次運算就有四種可能:結果為1的時候對應DB1;結果為2的時候對應DB2;

                    結果為3的時候對應DB3;結果為0的時候對應DB4。這樣一來就非常均勻的將資料分配到4個DB中。

                    優點:資料分佈均勻

                    缺點:資料遷移的時候麻煩,不能按照機器效能分攤資料

          3在認證庫中儲存資料庫的配置

                         重新建立一個DB,這個DB單獨儲存著user_id到 DB的對映關係,每次訪問資料庫都先要訪問一下這個資料庫,已得到具體的DB資訊,

                         然後才能進行具體的查詢操作。

                         優點:靈活性強,一對一關係

                  缺點:每次查詢之前都要多一次查詢,效能大打折扣