分庫分表技術演進&最佳實踐
阿新 • • 發佈:2018-11-14
移動網際網路時代,海量的使用者每天產生海量的數量,比如:
-
使用者表
-
訂單表
-
交易流水錶
以支付寶使用者為例,8億;微信使用者更是10億。訂單表更誇張,比如美團外賣,每天都是幾千萬的訂單。淘寶的歷史訂單總量應該百億,甚至千億級別,這些海量資料遠不是一張表能Hold住的。事實上MySQL單表可以儲存10億級資料,只是這時候效能比較差,業界公認MySQL單表容量在1KW以下是最佳狀態,因為這時它的BTREE索引樹高在3~5之間。
既然一張表無法搞定,那麼就想辦法將資料放到多個地方,目前比較普遍的方案有3個:
-
分割槽;
-
分庫分表;
-
NoSQL/NewSQL;
說明:只分庫,或者只分表,或者分庫分表融合方案都統一認為是分庫分表方案,因為分庫,或者分表只是一種特殊的分庫分表而已。NoSQL比較具有代表性的是MongoDB,es。NewSQL比較具有代表性的是TiDB。
Why Not NoSQL/NewSQL?
首先,為什麼不選擇第三種方案NoSQL/NewSQL,我認為主要是RDBMS有以下幾個優點:
- RDBMS生態完善;
- RDBMS絕對穩定;
- RDBMS的事務特性;