可以用說用到MySQL的地方,只要數據量一大, 馬上就會遇到一個問題,要分庫分表.
這里引用一個問題為什么要分庫分表呢?MySQL處理不了大的表嗎?
其實是可以處理的大表的.我所經歷的項目中單表物理上文件大小在80G多,單表記錄數在5億以上,而且這個表屬于一個非常核用的表:朋友關系表.
但這種方式可以說不是一個最佳方式. 因為面臨文件系統如Ext3文件系統對大于大文件處理上也有許多問題.
這個層面可以用xfs文件系統進行替換.但MySQL單表太大后有一個問題是不好解決: 表結構調整相關的操作基本不在可能.所以大項在使用中都會面監著分庫分表的應用.
從Innodb本身來講數據文件的Btree上只有兩個鎖, 葉子節點鎖和子節點鎖,可以想而知道,當發生頁拆分或是添加新葉時都會造成表里不能寫入數據.
所以分庫分表還就是一個比較好的選擇了.
那么分庫分表多少合適呢?
經測試在單表1000萬條記錄一下,寫入讀取性能是比較好的. 這樣在留點buffer,那么單表全是數據字型的保持在800萬條記錄以下, 有字符型的單表保持在500萬以下.
如果按 100庫100表來規劃,如用戶業務:
500萬*100*100 = 50000000萬 = 5000億記錄.
心里有一個數了,按業務做規劃還是比較容易的.
原文轉自:http://blogread.cn/it/article/5648