一、查询分离
查询分离,每次写数据的时候保存一份数据到其它的存储系统里,用户查询数据时从中获取数据。数据分为2份,主数据和查询数据。
使用场景:数据量大、查询数据请求的响应效率低。
触发查询分离:
1、修改业务代码,每次写入数据时,同步更新查询数据
2、修改业务代码,每次写入数据,异步更新查询数据
3、监控数据日志,有数据变化,更新查询数据
同步更新 | 异步更新 | 监控数据日志 | |
优点 | 保证数据实时性 | 不影响主流程 |
不影响主流程 业务代码零入侵 |
缺点 |
修改了代码 写操作更加耗时 | 查询数据时,可能还没来及更新 |
架构复杂 数据可能未及时更新 |
考虑问题
查询数据如何存储
查询数据如何使用
更新查询数据的线程失败了怎么办
历史数据怎么迁移
二、分表分库
当查询分离的主数据相当大时,写操作会变得非常慢。此时易采用分表分库来提高效率。