Java面试题

MySQL面试题

2019-08-17  本文已影响22人  红茶玛奇朵鸭

文章的目的主要是针对面试官的提问,做出尽可能精简而全面的回答。若读者对某块的知识不能太理解,还请参阅其他大佬比较详细的博客或者专业书籍,谢谢大家。


一.MySQL的存储引擎

        1.InnoDB:

        2.MyISAM:

        3.Memory:

        4.Archive:

二、事务的ACID

        1.原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中所有的操作要么全部提交成功,要么全部失败回滚,对一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。

        2.一致性(consistency):事务前后数据的完整性保持一致。

        3.隔离性(isolation):一个事务所做的修改在最终提交以前,对其他事务通常是不可见的。

        4.持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。

三、事务的隔离级别

        1.READ UNCOMMITTED (未提交读):一个事务可以读取另一个未提交事务的数据,这也称为脏读

        2.READ COMMITTED (提交读):一个事务要等另一个事务提交后才能读取数据。但会出现一个事务范围内两个相同的查询却返回了不同的数据,称为不可重复读。

        3.REPEATABLE READ (可重复读):在开始读取数据(事务开启)的时候,不允许修改操作。可重复读可以解决不可重复读问题。不可重复读对应的是修改即update操作,但是可能有幻读问题,因为幻读问题对应的是插入insert操作,而不是update操作。

        幻读:当某个事务在读取某个范围内记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围记录时,会出现换行。

        4.SERIALIZABLE (可串行化):最高的隔离级别,该级别下事务串行化顺序执行,可以避免脏读、不可重复读和幻读。但是效率低下,比较耗数据库的性能,会在读取的每一个行都加锁,所以会导致大量的超时和锁争用的问题。

四、多版本并发控制(MVCC)解决幻读问题


持续更新!!!!!觉得如果有帮助到你,麻烦评论喜欢加关注哟。

上一篇 下一篇

猜你喜欢

热点阅读