2021秋招备战:MySQL面试相关知识

什么是MySQL?(看似简单,不一定能回答上来)

MySQL是一种关系型数据库,在Java企业级开发中非常常用。因为MySQL是开源免费的,并且方便扩展。阿里巴巴数据库系统也大量用到了MySQL,因此它的稳定性是有保障的。MySQL是开源的,因此任何人都可以在GPL的许可下下载并根据个性化的需求对其进行修改。MySQL的默认端口号是3306.

1、什么是事务?

事务时访问并可能更新数据库中各种数据项的一个程序执行单元。是一个完整的业务逻辑单元事务不可以再分割:和事务相关的语句只有DML语句。
/*
数据库主要分为五大模块:
1.DQL:数据查询语言(凡是select语句都是)
2.DML:数据操作语言(对表内的数据进行增、删、改)
3.DDL:数据定义语言(库和表的定义和删除)
4.TCL:事务控制语言(commit提交事务,rollback回滚事务)
5.DCL:数据控制语言(Grant授权。Revoke收回系统权限)
*/
事务的作用:为了保证数据的完整性,安全性。
原理:多条DML语句组合,要么同时成功,要么同时失败。
事务的特性: (1)A 原子性:不可分。 atomicity
(2)C 一致性:多条语句同时成功,同时失败 consistency
(3) I 隔离性:事务A和事务B互不干扰。 isolation
(4) D 持久性:最终数据必须持久化到硬盘文件中,才算成功。 durability

2、数据库的隔离界别有哪些?MySQL默认的隔离级别是什么?

  1. 未提交读:允许一个事务读取另外一个事务没有提交的数据。会引发脏读。
    2)读已提交:一个事务只能读取另外一个事务已经提交的数据。克服了脏读。但是会出现不可重复读
    3)可重复读:解决了不可重复读,出现幻读。
    4)串行化:要求所有的SQL都会按照顺序执行。(该级别保证了数据的一致性,解决事务并发的所有问题)
    MySQL的默认隔离级别:可重复读(三级别)。Oracle的默认隔离级别是读已提交(二级别)

3、什么是脏读、幻读、不可重复读?

**脏读:**事务B读取到了事务A操作的数据,但是还未提交
**不可重复读:**指在一个事务内多次读同一个数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。就发生了在一个事务内两次读到的数据不一样的情况,因此称为不可重复读。
幻读:事务A读取了几行数据,接着另一个并发事务B插入了一些数据。在随后的查询中,第一个事务A就会发现多了一些原本不存在的记录,就像产生了幻觉一样。称为幻读
Note:不可重复发生在修改操作上
幻读发生在插入操作上,也即是说,插入数据了才会导致幻读。

4、MySQL有哪些存储引擎,各自优缺点?

MySQL支持InnoDB、MyISAM、MEMORY等存储引擎。
InnoDB引擎(MySQL5.5以后默认使用):
灾难恢复性好
支持事务
使用行级锁和表级锁,能支持更多的并发量
查询不加锁
支持外键关联
支持热备份
实现缓冲管理
Note:InnoDB存储引擎实现了两种标准的行级锁:
共享锁(读锁):只能读,不能update/delete/insert.允许事务读一行数据,可以多个事务同时获取
排他锁(写锁):允许事务删除或更新一行数据,delete/update/insert
MyISAM引擎:
不支持事务
使用表级锁,并发性差
主机宕机后,MyISAM表易损坏,灾难恢复性不佳
可以配合锁,实现操作系统下的复制备份、迁移
只缓存索引
数据紧凑存储,因此可获得更小的索引和更快的全表扫描性能
两者主要区别:
InnoDB支持事务,MyISAM不支持事务处理等高级处理。
InnoDB支持行级锁,而MyISAM仅支持表级锁。
MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快。
MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用。
InnoDB支持外键,MyISAM不支持。
MyISAM支持全文搜索,而InnoDB 1.2.x版本后才支持。
对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引。
详细见链接:[https://github.com/ZingBug/Java-Notes/blob/master/interviews]

5、SQL优化的一般步骤是什么?怎么看执行计划?如何理解其中各个字段的含义?

1.通过 show status 命令了解各种sql的执行频率
2. 定位执行效率较低的sql语句
3. 通过explain分析低效sql的执行计划
4. 通过 show profile 分析sql
5. 通过trace分析 优化器 如何选择执行计划
6. 确定问题并采取相应的优化措施
详细内容请看[https://blog.csdn.net/qq_17033579/article/details/82950096]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值