mysql數據庫的存儲會隨着數據的增長而出現不一樣的性能瓶頸,若是繼續採用關係型的數據庫將要採起分庫分表的策略。mysql
分庫:分庫是最簡單的操做,咱們舉個例子來講,一個網站的用戶,同時面對的是企業和我的,咱們能夠採用企業和我的的不一樣類型來使用不一樣的數據庫。前期是總體數據量比較大,若是網站根本沒有分庫的須要就不要作相關的設計,將出現分庫後的其餘問題。算法
分表:分表的策略有兩種,一種是當前數據的均勻分佈存儲,一種是數據的後期動態延展的分表。一樣以上面的用戶信息爲例,假設咱們的用戶量是2億,爲了提升性能,咱們預設定mysql的單表存儲在500萬時進行分庫操做。分庫操做有兩個前提,一種是非增量增加的數據,咱們能夠採用簡單的取模算法來平均到各個數據庫表(前提咱們用戶的取模算法的基礎是用戶主鍵是序列的數據,會均勻分佈);還有一種是增量的數據增加,須要咱們後期要動態的擴展表來存儲後續的數據,此時咱們經常使用的法則是區間的增量算法,0-500萬是user_001,500萬-1000萬是user_002,等等,後期能夠繼續擴展新增的用戶信息。sql
各個業務系統不一樣採用的策略和算法會有所不一樣,根據業務的需求有可能要冗餘一些表或者數據,這都是服務於業務的,不能純粹以技術來處理。數據庫