分库
选择合适的表拆分到多个数据库实例中, 可以直接缓解IO问题和CPU问题.
这里合适的表主要是指业务相关性不高的表.
例如, 一个电商库可以拆分为用户库,订单库,产品库等....垂直分表
针对某一个表IO较多, 同时表的列宽度较大时,一般会有如下问题:
(1)表的行宽度较大时,检索表的时候需要执行大量的IO,严重降低了性能;
(2)在数据更新时不仅会增加数据文件的IO负担,...这里拆表时, 可以根据以下拆分大表原则:
(1)把不常用的字段或者不经常更新的字段拆分到一张表, 经常变更的字段拆分到另一个表中;
(2)把text,blob等大字段拆分出来放在附表中,可以有效减少行溢出问题..., 提高IO效率;
(3)经常组合查询的列拆分到一张表中;
例如, 如下用户表:
用户表:{'用户ID', '昵称', '生日', 'email', '登录时间'}
先分析下表结构, 除了'登录时间...再举个例子, 如果针对有 1 亿数据的用户表, 这时比较好的处理方式是根据hash(userID)算法, 将数据平均分配到多个表中.
综上, 根据数据特点的不同, 需要选择不同的分表方式.