Java面试准备-Mysql

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Java面试准备-Mysql

Mysql常用的数据引擎有哪些


InnoDB:行及锁、主要有事务的支持,支持自增长列,支持外健约束,并发能力强。

MyISAM:全表锁、不支持事务、不支持外健,并发性能差,占用空间相对较少。

Memory:全表锁、速度快、存储内存中,重启数据会丢失。

Merge:MyISAM表的组合。

区别:

InnoDB不保存具体的行数,每次需要进行求和,也就是全表扫描、而MyISAM用一变量保存了整个表的行数,执行变量即可读出函数,速度很快。

InnoDB不支持全文索引、而MyISAM支持全文索引,查询效率更高。


数据库事务的特性


ACID:原子性、一致性、隔离性、持久性

原子性(Atomic):要么全部成功、要么全部失败。

一致性(Consistency):事务操作成功后,数据库状态和业务规则保持一致。

隔离性(Isolation):在并发操作时,不同的事务拥有各自的空间,彼此不互相干扰

持久性(Durabiliy):事务超过成功后,所有数据都需持久化到数据库中。


什么是索引


是Mysql高效获取数据的数据算法,通俗的讲:数据库的索引就好比一本书的目录,能够加快数据库表的查询速度。

索引往往是存在于磁盘中的,没有特别说明,默认是B+树结构。


SQL优化手段有哪些


查询不要用 select *

尽量减少子查询,采用联合关联查询

尽量减少not in 等查询效率比较低的查询条件,特别是整表扫描。

尽量避免where条件后面 使用 != <> 操作符,这样会导致全表扫描


简单说下 drop、delete、truncate的区别


drop 删除表、delete、truncate 删除表的数据。


什么是内连接、左连接、右连接


内连接(Inner Join):匹配两张表中相关联的记录

左连接(Left Join):除了匹配两张表相关联的记录外,还会匹配左表中剩余的记录,右表中位匹配到的字段用null表示

右连接(Right Join):除了匹配两张表相关联的记录外,还会匹配右表中剩余的记录


事务隔离级别


InnoDB采用的是可重复读,MVCC 不能解决幻读的问题,使用的是 Next-Key Lock 锁算法,可以规避幻读。


大数据量表该如何优化


限定数据查询范围:比如查询订单的时候,默认查询当天的

读写分离:主负责写、从负责读,根据场景,可以1住多从

垂直分区:根据数据表进行相关拆分,把一张表拆成多张表

水平拆分:保持数据结构不变,通过分片的方式存储到分布式数据库中。

数据库分片两种方式:客户端代理:封装在Jar包中、Sharding-JDBC

中间件代理:在应用和数据库中间加一个代理层,Mycat。


说说Mysql一条查询语句是如何执行的


获取连接:使用mysql连接器

查询缓存:mysql8.0已删除,不建议使用

分析器:分析词法和语法,一般语法错误就在这个地方

优化器:表里有多个索引的时候,决定采用什么索引,或者关联顺序

执行器:执行器判断执行条件,然后进行执行


什么时候不要使用索引


经常增删改的不要简历索引

有大量重复的列不要建立索引

表记录太少不要简历索引


什么是MVCC


多版本并发控制:是一种用来解决读写冲突无锁控制,为每一个修改保存一个版本,在读操作时不用阻塞写操作,在写操作时不用阻塞读操作,避免了脏读和不可重复读。


Mysql中的锁


共享锁:不阻塞,多个用户可以同一时刻读取相同的资源,相互之间没有影响。

排他锁:一个写操作阻塞其他读锁和写锁,这样只允许一个用户进行写入,防止其他用户读取正在写的内容。

表锁:MyISAM就是默认表锁

行锁:容易出现死锁,并发高,InnoDB支持行锁,但必须有索引,不然就是表锁。


什么时候锁会升级


Mysql行锁只能存在于索引上,因为InnoDB把主键和相关的行数据放在B+树的叶节点上面,如果索引不存在,自动升级为表锁

当非唯一索引操作一定数量时,也就是数据的一半时,这个时候索引的消耗会比表锁消耗更多,这个时候行锁自动升级为表锁


怎么避免数据库死锁:


设置锁等待操作时间,及时失败获取,也能退出程序,不至于一直等待导致死锁

保持事务简短,不要过长,减少开销

事务隔离级别顺序执行


使用Mysql索引的时候应该注意什么


查询的时候尽量少用 !=,比较、函数 等,导致索引失效全表扫描

复合索引遵循偏左原则

如果mysql索引扫描比较慢,会升级为全表扫描

列类型是字符串时,必须加引号,不然搜索也会失效

表字段可以为null的,索引是不生效的

like查询 %在前面的是不走索引的,走全表扫描

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
缓存 Java 关系型数据库
2025 年最新华为 Java 面试题及答案,全方位打造面试宝典
Java面试高频考点与实践指南(150字摘要) 本文系统梳理了Java面试核心考点,包括Java基础(数据类型、面向对象特性、常用类使用)、并发编程(线程机制、锁原理、并发容器)、JVM(内存模型、GC算法、类加载机制)、Spring框架(IoC/AOP、Bean生命周期、事务管理)、数据库(MySQL引擎、事务隔离、索引优化)及分布式(CAP理论、ID生成、Redis缓存)。同时提供华为级实战代码,涵盖Spring Cloud Alibaba微服务、Sentinel限流、Seata分布式事务,以及完整的D
168 1
|
2月前
|
缓存 Java API
Java 面试实操指南与最新技术结合的实战攻略
本指南涵盖Java 17+新特性、Spring Boot 3微服务、响应式编程、容器化部署与数据缓存实操,结合代码案例解析高频面试技术点,助你掌握最新Java技术栈,提升实战能力,轻松应对Java中高级岗位面试。
323 0
|
2月前
|
关系型数据库 MySQL Java
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
字节面试: MySQL 百万级 导入发生的 “死锁” 难题如何解决?“2序4拆”,彻底攻克
|
3月前
|
算法 架构师 Java
Java 开发岗及 java 架构师百度校招历年经典面试题汇总
以下是百度校招Java岗位面试题精选摘要(150字): Java开发岗重点关注集合类、并发和系统设计。HashMap线程安全可通过Collections.synchronizedMap()或ConcurrentHashMap实现,后者采用分段锁提升并发性能。负载均衡算法包括轮询、加权轮询和最少连接数,一致性哈希可均匀分布请求。Redis持久化有RDB(快照恢复快)和AOF(日志更安全)两种方式。架构师岗涉及JMM内存模型、happens-before原则和无锁数据结构(基于CAS)。
98 5
|
3月前
|
Java API 微服务
2025 年 Java 校招面试全攻略:从面试心得看 Java 岗位求职技巧
《2025年Java校招最新技术要点与实操指南》 本文梳理了2025年Java校招的核心技术栈,并提供了可直接运行的代码实例。重点技术包括: Java 17+新特性(Record类、Sealed类等) Spring Boot 3+WebFlux响应式编程 微服务架构与Spring Cloud组件 Docker容器化部署 Redis缓存集成 OpenAI API调用 通过实际代码演示了如何应用这些技术,如Java 17的Record类简化POJO、WebFlux构建响应式API、Docker容器化部署。
126 5
|
3月前
|
缓存 NoSQL Java
Java Redis 面试题集锦 常见高频面试题目及解析
本文总结了Redis在Java中的核心面试题,包括数据类型操作、单线程高性能原理、键过期策略及分布式锁实现等关键内容。通过Jedis代码示例展示了String、List等数据类型的操作方法,讲解了惰性删除和定期删除相结合的过期策略,并提供了Spring Boot配置Redis过期时间的方案。文章还探讨了缓存穿透、雪崩等问题解决方案,以及基于Redis的分布式锁实现,帮助开发者全面掌握Redis在Java应用中的实践要点。
174 6
|
3月前
|
安全 Java API
2025 年 Java 校招面试常见问题及详细答案汇总
本资料涵盖Java校招常见面试题,包括Java基础、并发编程、JVM、Spring框架、分布式与微服务等核心知识点,并提供详细解析与实操代码,助力2025校招备战。
160 1
|
3月前
|
算法 Java 微服务
2025 年 Java 面试宝典社招春招秋招实操全方位攻略
2025年Java面试宝典涵盖核心技术及最新趋势,分为四大板块:1. Java基础:深入数据类型、多态等特性,结合学生信息管理等实例;2. JVM核心:解析内存模型与GC算法,附多线程转账等场景应用;3. 高并发方案:详解synchronized与线程池配置,提供Web服务器优化案例;4. Spring生态:剖析IoC/AOP原理,演示微服务架构实现。特别新增Java 17+特性实操,包括Record类、密封接口等语法糖,整合Spring Boot 3、响应式编程及云原生技术,通过订单状态机、API网关配置。
222 1
|
3月前
|
NoSQL Java 微服务
2025 年最新 Java 面试从基础到微服务实战指南全解析
《Java面试实战指南:高并发与微服务架构解析》 本文针对Java开发者提供2025版面试技术要点,涵盖高并发电商系统设计、微服务架构实现及性能优化方案。核心内容包括:1)基于Spring Cloud和云原生技术的系统架构设计;2)JWT认证、Seata分布式事务等核心模块代码实现;3)数据库查询优化与高并发处理方案,响应时间从500ms优化至80ms;4)微服务调用可靠性保障方案。文章通过实战案例展现Java最新技术栈(Java 17/Spring Boot 3.2)的应用.
201 9
|
3月前
|
缓存 算法 NoSQL
校招 Java 面试高频常见知识点深度解析与实战案例详细分享
《2025校招Java面试核心指南》总结了Java技术栈的最新考点,涵盖基础语法、并发编程和云原生技术三大维度: 现代Java特性:重点解析Java 17密封类、Record类型及响应式Stream API,通过电商案例演示函数式数据处理 并发革命:对比传统线程池与Java 21虚拟线程,详解Reactor模式在秒杀系统中的应用及背压机制 云原生实践:提供Spring Boot容器化部署方案,分析Spring WebFlux响应式编程和Redis Cluster缓存策略。
82 1

推荐镜像

更多