分库
选择合适的表拆分到多个数据库实例中, 可以直接缓解IO问题和CPU问题.
这里合适的表主要是指业务相关性不高的表.
例如, 一个电商库可以拆分为用户库,订单库,产品库等....在做分库操作时, 需要注意避免引入分布式事务问题;
另外, 在设计不合理的系统中, 各表关联性较高, 做分库的同时, 业务代码可能也需要做兼容改动.
总体来说, 是一种性价比较高的优化方案....也增加系统重做日志(redo log),回滚日志(undo log),二进制日志(binlog)的IO负担;
(3)表的宽度过大,还会引起行溢出问题, 浪费更多磁盘空间;
这时可以优先做垂直拆分, 也就是垂直分表是将表的大字段或者多个字段分离到其他表中...这里拆表时, 可以根据以下拆分大表原则:
(1)把不常用的字段或者不经常更新的字段拆分到一张表, 经常变更的字段拆分到另一个表中;
(2)把text,blob等大字段拆分出来放在附表中,可以有效减少行溢出问题...这时最好的分库分表方法是将数据按时间分为热点数据和历史数据, 更久远的数据甚至可以做归档处理.