ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mybatis N+1问题解析(1),入职阿里啦

2021-09-20 09:37:32  阅读:138  来源: 互联网

标签:入职 级联 数据库 加载 刷题 Mybatis 解析 延迟


  • Mybatis

  • 数据库

  • 级联

[](

)N+1问题??

N+1问题来源于数据库中常见的级联技术,即N个数据库表形成关联关系,当再增加一个关联表时,也就是N+1个级联关系,由于某些时候,我们并不需要加载数据库的所有数据,而是某一个数据库表中数据,这时Mybatis会自动加载所有表的数据,多执行几条无关sql语句,会造成数据库资源的浪费以及系统性能的下降,这就是级联表的缺点。

[](

)如何解决N+1问题

Mybatis本身给出解决方案,就是延迟加载。

[](

)延迟加载

延迟加载会解决上述的N+1问题,也就是在N+1个级联表的情况下,只加载需求的数据库表数据。这是互联网发展的需求,性能提升的途径。

[](

)如何配置Mybatis完成延迟加载


全局配置:

	- lazyLoadingEnabled        true/false

	- aggressiveLazyLoading      true/false

	

	lazyLoadingEnabled:延迟加载的全局开关,当开启时,所有关联都会延迟加载。在特定的关联中,

使用fetchType属性覆盖该内容的功能。fetchType将在后面介绍。



	aggressiveLazyLoading:是层级延迟加载开关,什么意思呢?就是处于同一个层级的关联表会同

时延迟加载,或者同时被加载。

	

	配置:

		在Mybatis的全局配置中的setting标签中加入设置

		<setting>

			<setting name="lazyLoadingEnabled" value="true"/>

			<setting name="aggressiveLazyLoading" value="true"/>

		</setting> 

[](

)全局配置的缺点

上面的配置属于全局配置,会出现一个问题,同一个层级的级联表也存在需求性的差异,同一级的某个数据库表的数据或许不是我们经常使用的,那么上述的配置也会影响系统的性能。

总结

谈到面试,其实说白了就是刷题刷题刷题,天天作死的刷。。。。。

为了准备这个“金三银四”的春招,狂刷一个月的题,狂补超多的漏洞知识,像这次美团面试问的算法、数据库、Redis、设计模式等这些题目都是我刷到过的

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

并且我也将自己刷的题全部整理成了PDF或者Word文档(含详细答案解析)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

66个Java面试知识点

架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

算法刷题(PDF)

我的美团offer凉凉了?开发工程师(Java岗)三面结束等通知...

标签:入职,级联,数据库,加载,刷题,Mybatis,解析,延迟
来源: https://www.cnblogs.com/Android886/p/15313600.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有