天天看點

Mysql分表分庫分析

    1.分表

       在分表之前,首先要選中合适的分表政策(以哪個字典為分表字段,需要将資料分為多少張表),使資料能夠均衡的分布在多張表中,并且不影響正常的查詢。在企業級應用中,往往使用org_id(組織主鍵)做為分表字段,在網際網路應用中往往是userid。在确定分表政策後,當資料進行存儲及查詢時,需要确定到哪張表裡去查找資料,

       資料存放的資料表 = 分表字段的内容 % 分表數量

  2.分庫

        分表能夠解決單表資料量過大帶來的查詢效率下降的問題,但是不能給資料庫的并發通路帶來質的提升,面對高并發的寫通路,當Master無法承擔高并發的寫入請求時,不管如何擴充Slave伺服器,都沒有意義了。我們通過對資料庫進行拆分,來提高資料庫的寫入能力,即所謂的分庫。分庫采用對關鍵字取模的方式,對資料庫進行路由。

     資料存放的資料庫=分庫字段的内容%資料庫的數量

 3.即分表又分庫

        當資料庫同時面臨海量資料存儲和高并發通路的時候,需要同時采取分表和分庫政策。一般分表分庫政策如下:

         中間變量 = 關鍵字%(資料庫數量*單庫資料表數量)

         庫 = 取整(中間變量/單庫資料表數量)

        表 = (中間變量%單庫資料表數量)

     本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1909284,如需轉載請自行聯系原作者