spring系列 (spring festival)
本文目录导航:
spring系列——Mybatis +Tomcat:缓存原理+Container+子容器等
Mybatis 缓存机制包括一级缓存和二级缓存。
一级缓存是SqlSession级别的,当同一SqlSession口头相反SQL查问时,从第二次起间接从缓存失掉,最多缓存1024条SQL。
二级缓存是mapper级别的,不同SqlSession间共享缓存。
一级缓存原理:初次查问写入缓存,再次查问间接失掉,若两边口头修正、增加、删除操作则缓存清空。
二级缓存原理:以命名空间为单位创立缓存结构,婚配缓存再启动数据库查问。
二级缓存性能包括全局启用、Mapper性能和查问节点设置。
Tomcat架构包括顶层Server、Service、Connector和Container。
Server治理整个服务,蕴含至少一个Service,Service由Connector和Container组成。
Connector用于衔接和恳求封装,Container用于Servlet治理和恳求处置。
一个Server有且仅有一个Server,一个Service有多个Connector和一个Container,一个Service可以蕴含多个Service。
Server控制Tomcat生命周期,Service提供服务,Connector处置恳求,Container封装和治理Servlet。
Connector接纳恳求,封装成Request和Response,交由Container处置,处置终了后前往给Connector,最后由Connector经过Socket将结果前往客户端。
Connector经常使用ProtocolHandler处置恳求,蕴含Endpoint、Processor和Adapter。
Endpoint处置底层Socket衔接,Processor成功HTTP协定,Adapter将恳求适配到容器处置。
Connector外部蕴含四个子容器:Engine、Host、Context、Wrapper,区分用于治理站点、站点、运行和Servlet。
Container经常使用Pipeline-Valve管道处置恳求,Valve是责任链形式,从最顶层容器到最底层容器依次口头。
Engine、Host、Context和Wrapper容器区分对应EngineValve、HostValve、ContextValve、WrapperValve。
恳求处置流程从Connector开局,依次经过各层容器,最终在Wrapper容器内创立FilterChain,口头Filter和Servlet处置恳求。
一切管道口头终了,前往结果给Connector,经过Socket前往客户端。
MyBatis 用过吗?一二级缓存分明吗?什么是最左婚配准则?
最左前缀婚配准则解释:在MySQL构建联结索引时,会遵照最左优先准则,即从联结索引的最左侧字段开局婚配。
举例来说,若有张student表,依据学院编号与班级建设联结索引index_magor_class (magor,class),索引树结构从左侧的学院编号开局排序,再依据班级排序。
若查问条件仅蕴含班级消息,不可经常使用联结索引,但学院编号则或者婚配到联结索引。
设计索引时的战略:应用笼罩索引防止回表操作,如查问主键学号时间接经过主键索引失掉数据,防止额外查问。
设计惟一索引在业务上具备惟一个性,即使组合字段,也应建设惟一索引。
防止超越三个表的join操作,保障关联字段有索引,优化SQL性能。
对varchar字段建设索引时,依据实践文本区分度设定索引长度,平衡索引长度与区分度。
页面搜查防止全含糊查问,应经过搜查引擎处置,应用索引的最左前缀婚配个性优化查问效率。
SQL性能优化指标至少到达range级别,谋求ref级别,如或者则谋求const级别,以优化查问速度。
MyBatis的缓存机制:MyBatis一级缓存为SQLSession级别,作用域为同一SQLSession,成功查问结果缓存,缩小数据库访问。
二级缓存为mapper级别的缓存,需手动开启,存储mapper对应的查问结果,缩小重复查问数据库。
MySQL主从同步原理:Master数据库记载Binary log日志,Slave数据库启动I/O线程衔接Master数据库失掉变动的日志,保留到自己的Relay log日志文件中,Slave SQL线程定时审核Relay log降级数据。
分库分表战略与目的:分库分表是为了减轻数据库压力,缩小查问期间,实用于单表行数超越500万行或单表容量超越2GB的状况。
经常出现的分库分表战略包括垂直拆分、水平拆分、经常使用两边件等,详细战略需依据业务需求和数据特点选用,如按userId取模、固定位拆分、hash拆分、range拆分、业务域拆分、大字段独立存储、不罕用字段独自存储等。
处置不同字段查问:假设经常使用userId做分库分表,但须要依据电话号码查问,可以经过独自建设电话号码索引表,寄存电话号码与userId,查问时先依据电话号码失掉userId,再经过userId查问数据,相似回表逻辑。
mybatis的缓存机制是怎样样的
MyBatis将数据缓存设计成两级结构,分为一级缓存、二级缓存:一级缓存是Session会话级别的缓存,位于示意一次性数据库会话的SqlSession对象之中,又被称之为本地缓存。
一级缓存是MyBatis外部成功的一个个性,用户不能性能,自动状况下智能允许的缓存,用户没有定制它的权益(不过这也不是相对的,可以经过开发插件对它启动修正);二级缓存是Application运行级别的缓存,它的是生命周期很长,跟Application的申明周期一样,也就是说它的作用范畴是整个Application运行。