如何在spring 下启动数据库读写分别 mybatis (如何在spring boot中配置日志)
本文目录导航:
如何在spring + mybatis 下启动数据库读写分别
读写分别是为了缩小数据库的负荷,当用户高并发访问时,绝大局部都是用户查问,少局部用户是写入到数据库的。
这些咱们把数据库拆分红主从两个数据库,主数据库用高性能主机承载高并发的用户访问并加redis缓存。
在这里我不讲mysql的主从同步性能,大家可以去查下资料,我接上去重点讲怎样灵活的给每个sql注入数据源。
springboot+mybatis如何优雅的成功数据库读写分别?
成功数据库读写分别是提高系统稳固性和性能的关键手腕,尤其是在高并发场景下。
在Spring Boot + MyBatis的环境中,优雅地成功这一性能须要思考多个方面,以确保数据的分歧性和防止经常出现的失误,如数据源选用不当造成的提前疑问。
经常出现的读写分别圈套之一在于数据操作的并发性治理。
例如,在口头拔出操作后立刻启动查问,假设查问走的是从库,或者会遇到主从提前造成的从库查问结果为空的状况。
这种状况下,运行或者会误判拔出操作未成功,从而重复口头拔出,引发数据分歧性疑问。
为处置这类疑问,成熟的数据库两边件如TDDL和Sharding-JDBC提供了有效的处置打算。
它们经过在事务高低文中判别刚刚启动的操作类型,确保后续查问遵照相应的数据源战略。
这样,即使在并发环境下,也能保障数据操作的分歧性和正确性,防止了因主从提前造成的失误。
介绍经常使用Shardingsphere这一弱小的数据库两边件,它允许JDBC间接交流数据源性能并减少读写规定,或是驳回Proxy形式,模拟一个MySQL实例,使得运行程序无需改变即可享遭到读写分别带来的性能优化和稳固性增强。
在Shardingsphere的官网文档中,无对于读写分别的具体说明和示例,能协助开发者极速上手并集成到名目中。
此外,Shardingsphere的GitHub页面也提供了丰盛的资源,包含代码示例、用户案例和社区探讨,为开发者提供了片面的允许。
MyBatis源码解读 - 经常使用SqlRunner操作数据库
SqlRunner,一个十分适用的、用于操作数据库的工具类。
该类对JDBC启动了很好的封装,联合SQL工具类,能够很繁难地经过Java代码口头SQL语句并检索SQL口头结果。
SqlRunner提供了如下同个用于操作数据库的方法:
SqlRunner经常使用示例:
selectAll()方法源码:
setParameters()方法源码:
setParameters()方法处置逻辑:依据参数类型失掉对应的类型处置器,假设没有对应的类型处置器会抛意外,失掉到类型处置器后会调用类型处置器的setParameter()方法设置参数值。
getResults()方法源码: