資料庫 流量切分 資料庫水平切分方法

2021-10-13 13:42:03 字數 652 閱讀 3707

在大中型專案中,在資料庫設計的時候,考慮到資料庫最大承受資料量,通常會把資料庫或者資料表水平切分,以降低單個庫,單個表的壓力。我這裡介紹兩個我們專案中常用的資料表切分方法。當然這些方法都是在程式中使用一定的技巧來路由到具體的表的。首先我們要確認根據什麼來水平切分?在我們的系統(sns)中,使用者的uid貫穿系統,唯一自增長,根據這個字段分表,再好不過。

方法一:使用md5雜湊

做法是對uid進行md5加密,然後取前幾位(我們這裡取前兩位),然後就可以將不同的uid雜湊到不同的使用者表(user_xx)中了。

function gettable( $uid )d" , ($uid >> $seed) );

總結:上面兩種方法,都要對我們當前系統的使用者資料量做出可能最大的預估,並且對資料庫單個表的最大承受量做出預估。

比如第二種方案,如果我們預估我們系統的使用者是100億,單張表的最優資料量是100萬,那麼我們就需要將uid移動20來確保每個表是100萬的資料,保留使用者表(user_***x)四位來擴充套件1萬張表。

又如第一種方案,每張表100萬,md5後取前兩位,就只能有256張表了,系統總資料庫就是:256*100萬;如果你系統的總資料量的比這還多,那你實現肯定要md5取前三位或者四位甚至更多位了。

兩種方法都是將資料水平切分到不同的表中,相對第一種方法,第二種方法更具擴充套件性。。。

資料庫 流量切分 資料庫水平切分方法

在大中型專案中,在資料庫設計的時候,考慮到資料庫最大承受資料量,通常會把資料庫或者資料表水平切分,以降低單個庫,單個表的壓力。我這裡介紹兩個我們專案中常用的資料表切分方法。當然這些方法都是在程式中使用一定的技巧來路由到具體的表的。首先我們要確認根據什麼來水平切分?在我們的系統 sns 中,使用者的u...

資料庫切分之水平切分

資料庫切分之水平切分 水平切分的目的是為了控制單錶記錄數,從而保證同一型別的資料雜湊到不同的表或者不同的庫中。資料庫水平切分就是對某個表按照路由規則儲存在多個表中,如表t會拆分成t1,t2,t3這些表也有可能儲存在不同的庫中,也有可能儲存在同乙個庫中,如t表分別存在server1.t,server2...

資料庫水平切分法

在大中型專案中,在資料庫設計的時候,考慮到資料庫最大承受資料量,通常會把資料庫或者資料表水平切分,以降低單個庫,單個表的壓力。我這裡介紹兩個我們專案中常用的資料表切分方法。當然這些方法都是在程式中 使用一定的技巧來路由到具體的表的。首先我們要確認根據什麼來水平切分?在我們的系統 sns 中,使用者的...