数据库读写分离方法浅析

本文探讨了数据库在业务发展过程中遇到的压力,如表数量增多、复杂查询和大事务,提出了解决方案,包括分库分表、清理或迁移旧数据。重点介绍了读写分离的四种常见方法:中间件转发、应用层分离、数据库驱动和缓存策略,并分析了各自的优缺点。作者分享了在Java Web环境中应用层分离的实现细节,以实现动态数据源路由。
摘要由CSDN通过智能技术生成

原创作品,出自 “晓风残月xj” 博客,欢迎转载,转载时请务必注明出处(http://blog.csdn.net/xiaofengcanyuexj)。

由于各种原因,可能存在诸多不足,欢迎斧正!


       随着业务的快速发展,表不断增多,结构不断扩大,数据量也在慢慢积累,最近数据库DB压力较大,有些慢查询日志 。个人总结原因如下:表数量和结构日渐复杂,单表数量增多,联表查询等大sql ,应用层大事务等等。

1、表数量和结构日渐复杂
     随着业务的扩张,这种规模带来的问题最通用的解决方案应该是分库分表。分库有2种:水平拆分和垂直拆分。其中,垂直分库是将不同业务含义的表拆分到不同的数据库中;水平分库是将相同表中不同业务含义的数据行拆分到不同的数据库中。同理,分表也有垂直拆分和水平拆分的区别。其中,垂直分表是将表的不同字段拆分成不同的表;水平分表是将表的不同数据行拆分到不同表中,比如历史数据切分,冷热数据分离等等。

2、单表数量增多

      可以通过分表分库解决,不过相对工作量大点。简单直接粗暴的解决方案是将过期或者无效或者相对不重要的数据分离或者清理掉,可以定期同步到相对隔绝的历史表中,也可以应用层定时任务直接删除数据(物理删除和逻辑删除都可以),不过最好是定时任务或者手工同步到历史表中备份,以防以后用到。

3、联表查询等大sql 

    拆分联表查询等大sql语句,可以减少大sql造成的读写锁竞争、利用DB本身的查询缓存、方便应用层预加载设置缓存,但拆分sql分多次查询潜在的问题是占用网

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值