前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java面试题 --- MySQL①

java面试题 --- MySQL①

作者头像
贪挽懒月
发布2022-05-18 13:27:24
3220
发布2022-05-18 13:27:24
举报
文章被收录于专栏:JavaEEJavaEE

1. 对 MySQL 的架构了解吗? MySQL 主要分为连接层,服务层,引擎层和存储层。

  • 连接层就是提供连接服务的,比如 JDBC 驱动;
  • 服务层包括连接池、SQL 接口、解析器、优化器等;
  • 引擎层就是真正负责数据读写的,innoDB 就属于引擎层;
  • 存储层就负责将数据存储到文件系统。

2. MySQL 有哪些存储引擎?有什么区别? 常见的有 InnoDB 和 MyISAM。

  • InnoDB 支持行锁,表锁,事务,使用聚簇索引,写数据的效率比 MyISAM 更高。它有四个特性,插入缓冲,双写,自适应哈希,预读。插入缓冲就是插入数据之前会检查缓冲中有没有,没有的话会先插入到缓冲中,有的话就会以一定的频率将缓冲和索引页合并;双写就是数据写到磁盘前会先写到缓存中,保证数据的可靠性;自适应哈希就是存储引擎会监控索引页的查询,如果发现用 Hash 索引会提升性能,就会自动建立 Hash 索引;预读就是 InnoDB 会用算法预测用户下次要读取的数据,提前加载到缓存池中,提升性能。
  • MyISAM 只支持表锁,不支持事务,使用非聚簇索引,查询的效率比 InnoDB 更高。

3. SQL 分为哪几类?

  • DDL:数据定义语言,比如 create、drop、alter、truncate;
  • DQL:数据查询语言,比如 select;
  • DML:数据操纵语言,比如 insert、update、delete;
  • DCL:数据控制语言,比如 grant、revoke(删除权限)、commit、rollback。

4. 删除数据有哪几种方式,有什么区别? drop、truncate、delete 都可以删除数据。

  • drop 会删除表结构,不能回滚,效率最高;
  • truncate 删除所有数据,不会删除表结构,不能回滚,效率次之;
  • delete 删除部分或所有数据,不会删除表结构,可以回滚,效率最差。

5. 对 MySQL 的三大范式了解吗?

  • 第一范式就是每一列都不能再拆分;
  • 第二范式就是在第一范式的基础上,非主键列都完全依赖主键;
  • 第三范式就是在第二范式的基础上,任意两个非主键列不能有依赖,确保非主键列都直接和主键列相关,而不是间接相关。

6. 数据库有哪些并发问题?

  • 脏读:一个事务读取到了别的事务未提交的数据;
  • 写丢失:事务 A 和事务 B 同时读取到 age 为 18,然后事务 A 将其改成 20,接着事务 B 将其改成 16,最后数据库中的是 16,事务 A 的修改就丢失了;
  • 不可重复读:一个事务对同一条数据多次读取的结果不一样,可能是在此期间别的事务修改过;
  • 幻读:一个事务内,两次查询出来的记录条数不一样,就像发生了幻觉一样。

7. 数据库事务有什么特性? 数据库事务有四大特性,ACID:

  • 原子性(A):一组操作不能再切分,要么全部成功,要么全部失败。它的原理是在 undo log 中记录相反的操作,如果事务回滚了,就根据 undo log 执行相反的操作;
  • 一致性(C):一个事务对数据修改的中间状态对别的事务不可见。比如转账操作,A 账户减少 100 元,B 账户又还没增加 100 元的这个中间状态对外是不可见的;
  • 隔离性(I):事务之间相互隔离,一个事务不会被其他事务干扰;
  • 持久性(D):事务对数据库所做的操作是永久有效的。

8. 数据库事务有哪些隔离级别?

  • 读未提交:一个事务可以读取到别的事务未提交的数据;
  • 读已提交:一个事务只能读取别的事务已经提交的数据,可防止脏读;
  • 可重复读:一个事务内对同一条记录多次读取的结果一致,InnoDB 默认的隔离级别,可防止脏读和不可重复读;
  • 可串行化:事务串行执行,可以防止脏读、不可重复读和幻读。

9. MySQL 有哪几种锁? MyISAM 只支持表锁,InnoDB 支持表锁和行锁,BDB 支持表锁和页锁。

  • 行锁:锁定被操作的行,其他行不受影响,并发性好,加锁开销大;
  • 表锁:锁定被操作的表,表中所有数据都受影响,并发性不好,加锁开销小;
  • 页锁:锁定一个数据页,其他页不受影响,并发性和加锁开销介于行锁和表锁之间。

10. InnoDB 的行锁算法有哪几种?

  • Record Lock:锁定一条记录;
  • Gap Lock:间隙锁,锁定一个范围,但是不包含记录本身,为了防止幻读;
  • Next-key Lock:锁定一个范围,且包含记录本身,也可防止幻读。当查询索引含有唯一属性时,Next-key Lock 会变为 Record Lock。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档