分库 & 分表
垂直分库:按照业务线,比如用户、订单等拆分成多个数据库,缺陷跨库操作
垂直分表:列太多影响性能,把表的列拆分开,如订单表 ---> 订单基本信息表+订单附加信息表
水平分表:按照一定的分表策略把表水平切分(不破坏表结构)
表中数据500万到1000万,性能还行
超过1000万性能就会逐渐下降
水平分表策略:范围拆分、hash拆分、日期拆分
分库分表并不冲突,根据业务需要进行垂直分库、垂直分表、水平分表
数据库中间件:mycat、 TDDL、 Sharding-JDBC、cobar
对用户而言,由于中间件的存在,水平切分是透明的,用户感知不到
用户就好像操作一张表一样操作多张切分的表
中间件也支持读写分离等