Mysql水平分表

2021-06-19 04:38:51 字數 664 閱讀 3039

mysql水平分表

mysql在資料量大的情況下,會遇到水平分表的情況。

1:條件中含有分表的資訊

比如說要劃分10個表,那對10進行取模。其實也可以是任意雜湊函式,但是要注意注意衝突處理。

2: 根據時間拆表

當表的關係比較複雜時,無法根據某個維度進行分表。但是有明顯的時效性。

想必大家都用微薄,某人發的微薄,會被推送到千家萬戶。所以某條微薄是無法根據使用者id進行分表查詢。而微薄是有很強的時效性的。一年前的預設的動態資訊是不會再關心的。我們把微薄按時間分表,三個月一張表。而行級快取(memcached)只儲存了乙個月。使用者微薄收件箱(微薄id列表)一般都是限長的。當快取伺服器重啟或不命中時,需要查詢mysql,mysql按時間分表,快取不命中的情況下,大部分情況下都是查近三個月的微薄。所以近1年的微薄我們可以儲存在物理資源比較好的資料庫伺服器上。

3:根據自增長id拆表

這種分割法不是取模分,而是每張表存指定量的資料。如果資料量到了,就存放到新錶中。這樣可以完全控制每張表的資料量。關係非常簡單並且有時效性的情況下可以用。

4:資料遷移的方式

當一些很久之前的資料,很少再查詢。比如員工工資表,我們可以只存今年的工資情況。而歷史資料我們可以遷移到一張salary_old表中,保證資料不會丟失。但也可以用來查詢。

很簡單吧,其實分庫的原理也類似。

Mysql常見水平分表方案

根據經驗,mysql表資料一般達到百萬級別,查詢效率會很低,容易造成表鎖,甚至堆積很多連線,直接掛掉 水平分表能夠很大程度較少這些壓力。一般在有嚴格的自增id需求上,如按照user id水平分表 table 1 user id從1 100w table 2 user id從101 200w tabl...

Mysql常見的水平分表

根據經驗,mysql表資料一般達到百萬級別,查詢效率會很低,容易造成表鎖,甚至堆積很多連線,直接掛掉 水平分表能夠很大程度較少這些壓力。一般在有嚴格的自增id需求上,如按照user id水平分表 table 1 user id從1 100w table 2 user id從101 200w tabl...

mysql 水平分表 垂直分表

mysql的分表技術 水平分割技術 以qq使用者登入為例 建立uuid表 create table uuid id int unsigned primary key auto increment 建立3張使用者表 create table qqlogin0 id int unsigned prima...