我是靠谱客的博主 贤惠小熊猫,最近开发中收集的这篇文章主要介绍【Mysql高频面试题整理 一】Mysql–常用的数据库之一,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Mysql高频面试题,持续手机更新ing

Mysql–常用的数据库之一

面试一般会问哪些相关的问题呢,今天带大家整理一波,后面持续更新,一点浅见,欢迎各位大佬莅临指导。

Mysql面试高频题有哪些呢

#1. Mysql的存储引擎有哪些,有什么区别?
Mysql作为大家常用的关系数据库,其中也有不同的数据引擎,大家最常用的自然是Innodb,当然还有像Myisam,memory等。
那么Innodb和Myisam这两者之间有什么区别呢?
首先Innodb存在聚族索引,而Myisam是非聚簇索引
Innodb一般数据和索引是放在一起的,而Myisam是分开放的
其次Innodb支持事务的处理,Myisam不支持
Innodb支持外键的数据结构, Myisam并不支持
Innobd支持表级锁和行级锁, 而Myisam仅支持表级锁

#2. MySQL中InnoDB支持的四种事务隔离级别名称?
1、read uncommited :读未提交
2、read committed:读未提交
3、repeatable read:可重复读
4、serializable :串行化
Mysql默认的隔离级别是可重复读。

#3. Mysql使用的是什么索引,有什么好处?
Mysql使用的是B+Tree索引,是一种树形结构的索引,不同常见的hash索引,主要是针对范围查询设计的,通过添加合适的索引增加范围条件查询的效率,避免全表查询。

#4. Mysql有哪几种日志?
MySQL中存在着以下几种日志:重写日志(redo log)、回滚日志(undo log)、二进制日志(bin log)、错误日志(error log)、慢查询日志(slow query log)、一般查询日志(general log)。

【redo log 】是一种基于磁盘的数据结构,用来在MySQL宕机情况下将不完整的事务执行数据纠正,redo日志记录事务执行后的状态。

【undo log】主要用来回滚到某一个版本,是一种逻辑日志。undo log记录的是修改之前的数据,在执行事务回滚的时候,就可以通过undo log中的记录内容并以此进行回滚。

【bin log】日志是用来记录MySQL中增删改时的记录日志。bin log最大的用处就是进行主从复制,以及数据库的恢复。

【error log】主要记录MySQL在启动、关闭或者运行过程中的错误信息。

【slow query log】 慢查询日志用来记录执行时间超过指定阈值的SQL语句,找出慢SQL后可以通过explain关键字进行SQL分析。

【general log 】记录了客户端连接信息以及执行的SQL语句信息。

#5. 什么是Mysql的乐观锁和悲观锁?
1:悲观锁, 就是对于数据的处理持悲观态度,总认为会发生并发冲突,获取和修改数据时,别人会修改数据。所以在整个数据处理过程中,需要将数据锁定。通常依靠数据库提供的锁机制实现,比如mysql的排他锁,select … for update来实现悲观锁。
2:乐观锁, 就是对数据的处理持乐观态度,乐观的认为数据一般情况下不会发生冲突,只有提交数据更新时,才会对数据是否冲突进行检测。一般是给表加一个版本号或时间戳的字段,读取数据时,将版本号一同读出,数据更新时,将版本号加1。

#6. 什么是ACID?
1、A 原子性:即不可分割性,事务要么全部被执行, 要么就全部不被执行。
2、C 一致性。事务的执行使得数据库从一种正确状态转换成另一种正确状态
3、I 隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务。
4、D 持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。

#7. 什么是最左匹配原则?
最左优先,以最左边的为起点任何连续的索引都能匹配上。当索引类型为联合索引时,数据库会依据联合索引最左的字段来构建B+树,也叫最左匹配原则。

#8. 什么叫回表?
先根据字段A所在的索引树找到对应主键,然后通过主键索引树查询到所要的记录,这个过程叫做回表查询。回表一般是查询字段有多个,索引数据无法覆盖字段,导致无法在索引数据中取出所有需要的字段数据,所以需要回表查询。

#9. 什么叫覆盖索引?
覆盖索引是一种数据查询方式,不是索引类型,在索引数据结构中,通过索引值可以直接找到要查询字段的值,而不需要通过主键值回表查询,那么就叫覆盖索引,查询的字段被使用到的索引树全部覆盖到。

#10. 什么是共享锁,什么是排他锁
select * from A for update , 这种是排他锁。
select * from A lock in share mode,这是共享锁。
共享锁又称为读锁,简称S锁,共享锁就是指多个事务只能读数据而不能修改数据。(即只读不能改)
排他锁又称为写锁,简称X锁,排他锁是指一个事务在一行数据加上锁后,其它事务不能再对其加锁。

最后

以上就是贤惠小熊猫为你收集整理的【Mysql高频面试题整理 一】Mysql–常用的数据库之一的全部内容,希望文章能够帮你解决【Mysql高频面试题整理 一】Mysql–常用的数据库之一所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部