1.常用的连接池有哪些,他们有什么区别
常用的连接池有
常用的数据库连接池包括 HikariCP、C3P0、DBCP(Tomcat JDBC Pool)、Druid 等,核心区别如下:
HikariCP:性能最优,轻量级,启动快,内存占用低,默认配置优化较好,是 Spring Boot 2.x 后的默认连接池。
C3P0:历史悠久,稳定性好,但性能较差,配置复杂,且更新较慢。
DBCP(Tomcat JDBC Pool):Apache 推出,与 Tomcat 集成紧密,性能中等,配置简单,但功能较少。
Druid:阿里开源,功能丰富(监控、防 SQL 注入、日志等),性能接近 HikariCP,适合需要监控和扩展的场景。
2.sql的执行流程简单说一下
在Service层使用连接器查询缓存,
然后使用解析器把SQL翻译成MySql能看的懂得形式,
解析器会生成一个抽象语法树(ast),
之后使用预处理器保证 SQL 语义 正确(对象存在、权限足够、别名解析),
然后查询优化器找到其中最优的执行计划,最后执行器,
根据优化器生成的执行计划,调用存储引擎 API,逐步取出数据并返回给客户端
3.常用的存储引擎和区别说一下
innodb,支持事务,行级锁
MyISAM,不支持事务,支持表极锁,查询速度快
Memory,数据存储于内存中,速度极快
1.mysql页是什么?
数据页,InnoDB存储的最小单位是页,默认大小16kb
2.索引是什么意思?
帮助MySQL高效获取数据的排好序的数据结构
3.b+树和b树有什么区别?
B+树:只有叶子节点存储键和对应的数据;非叶子节点仅存储键,不存储实际数据,所有叶子节点通过双向链表连接.查询效率高
B树:每个节点既存储键,也存储对应的数据,每个叶子节点之间是独立的,没有指针连接.
4.mysql有哪些索引?
从数据库角度来说的话:有B+树索引,Hash索引,全文索引
物理存储角度:聚簇索引,非聚簇索引
聚簇索引(聚集索引):索引结构包含所有数据的索引,InnoDB中的主键索引就属于聚簇索引。
非聚簇索引(非聚集索引):索引结构和数据分开存放的索引,二级索引(辅助索引)就属于非聚簇索引。
什么是事务:
保持数据一致性,要么同时成功要么同时失败
5.聚簇索引是什么意思?
聚簇索引(聚集索引):索引结构包含所有数据的索引,InnoDB中的主键索引就属于聚簇索引。
6.回表是什么意思?
通过非聚集索引找到记录的位置后,还需要再次访问聚集索引(主键索引)才能获取完整的行数据的过程.
7.索引覆盖是什么?
当一次sql查询需要的所有列,都能从索引中直接获取,而不用回表到数据页里面获取数据,这个查询叫做覆盖索引查询
8.索引下推是什么?
索引下推就是把一部分where条件下的东西放到二级索引里面做,减少回表速度更快
9.索引为什么不能过多?
写操作开销增加,索引越多,写操作越慢,占用储存空间,优化器选择困难
10.主键索引为什么建议用自增id
第一点是innoDB是聚簇索引,表的数据本身的就是按主键顺序存储的,主键索引的叶子节点存放完整行数据,第二点是自增主键可以顺序写入.
11.什么是页分裂?
B+树的页满了,又要在中间插入新纪录时,mysql就会,把原页拆成两个页,移动部分数据到新页,更新上层索引指针.
12.最左前缀原则是什么?
最左前缀原则是数据库中联合索引(复合索引) 的核心使用规则,指的是:在使用联合索引时,数据库会优先匹配索引中最左边的列,且只能匹配索引中 “从最左列开始的连续前缀部分”。简单来说,联合索引的生效依赖于查询条件是否包含索引中最左边的列,且顺序必须从左到右连续匹配。
13.什么是索引合并?
当一个查询条件涉及多个不同索引时,mysql优化器可以同时使用多个索引,再把结果集合并,从而避免全表扫描.
1045

被折叠的 条评论
为什么被折叠?



