mysql订单表上亿怎么分表_[转]单表上亿的数据量如何分表
之前的幾篇關于分表的,提到的分表策略不夠詳細,我在這篇中補充一些分表策略吧:
按號段分:
(1) user_id為區分,1~1000的對應table1,1001~2000的對應table2,以此類推,或者以id最后兩位數字為區分,分到table00-table99表中;
優點:可部分遷移
缺點:數據分布不均
(2)hash取模分:
對user_id進行hash(或者如果user_id是數值型的話直接使用user_id 的值也可),然后用一個特定的數字,比如應用中需要將一個表切分成4個表的話,我們就用4這個數字對user_id的hash值進行取模運算,也就是user_id%4,這樣的話每次運算就有四種可能:結果為1的時候對應table1;結果為2的時候對應table2;結果為3的時候對應table3;結果為0的時 候對應table4,這樣一來就非常均勻的將數據分配到4個table中。當然還有其他一些算法,可以以user_name作為參數,進行hash運算,可參考@php hash算法使用
優點:數據分布均勻
缺點:數據遷移的時候麻煩,不能按照機器性能分攤數據
(3)在認證庫中保存數據庫配置
就是建立一個table,這個table單獨保存user_id到table的映射關系,每次訪問數據庫的時候都要先查詢一次這個數據庫,以得到具體的table信息,然后才能進行我們需要的查詢操作。
優點:靈活性強,一對一關系
缺點:每次查詢之前都要多一次查詢,性能大打折扣
以上就是我們在開發中通常選擇的方式,在一些復雜的項目中我們也可以混合使用這幾種方式。
總結
以上是生活随笔為你收集整理的mysql订单表上亿怎么分表_[转]单表上亿的数据量如何分表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c java 开发效率高_Java 的开
- 下一篇: mysql索引抽密度_使用python脚