分库分表设计
一、前言
美团外卖,每天都是几千万的订单,淘宝的历史订单总量应该百亿,甚至千亿级别,这些海量数据远不是一张表能Hold住的。事实上MySQL单表可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单表容量在1KW量级是最佳状态,因为这时它的BTREE索引树高在3~5之间。那如何解决这一问题呢?分库分表中间件有哪些以及各自的优缺点等,本小节将简单介绍下。
二、问题答疑
2.1、为什么要分库分表?
如前言中的例子,公司业务发展越好,用户就越多,数据量越大,请求量越大,单个数据库就会扛不住,此时就会采用相应的策略解决该场景
分区;
分库分表;
NoSQL/NewSQL;
说明:只分库,或者只分表,或者分库分表融合方案都统一认为是分库分表方案,因为分库,或者分表只是一种特殊的分库分表而已。NoSQL比较具有代表性的是MongoDB,es。NewSQL比较具有代表性的是TiDB。
目前绝大部分公司的核心数据都是:以RDBMS存储为主(关系数据库管理系统),NoSQL/NewSQL存储为辅