美文网首页
数据库篇面试题精讲(高级)

数据库篇面试题精讲(高级)

作者: codewd站长 | 来源:发表于2020-02-11 22:00 被阅读0次

    1.mysql隔离级别对应的实现原理?

    答:1.读未提交

                  对于修改的项加排它锁,直到事务结束释放;没有快照读,只能读最新版本的数据。

        2.读已提交

                   对于修改的项加排它锁,直到事务结束释放;有快照读,快照的粒度是语句级。 

        3.可重复读

                  对于修改的项加排它锁,直到事务结束释放;有快照读,快照的粒度是事务级。 

             MVCC的全称是“多版本并发控制”。  

          3.串行化

    2.解释一下mysql共享锁,排他锁?

    答:共享锁又称读锁 是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁。在查询语句后面增加LOCK IN SHARE MODE,MySQL 就会对查询结果中的每行都加共享锁,当没有其他线程对查询结果集中的任何一行使用排他锁时,可以成功申请共享锁,否则会被阻塞。其他线程也可以读取使用了共享锁的表,而且这些线程读取的是同一个版本的数据。

            排他锁又称写锁、独占锁,如果事务T对数据A加上排他锁后,则其他事务不能再对A加任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据在查询语句后面增加FOR UPDATE,MySQL 就会对查询结果中的每行都加排他锁,当没有其他线程对查询结果集中的任何一行使用排他锁时,可以成功申请排他锁,否则会被阻塞。

    3.手写sql语句(完整的面试流程这边都会让你手写一个相对复杂一点的sql)

            1.编写一个 SQL 查询,来删除 email 表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小的那个。

     答:DELETE p1 FROM email p1, email p2 WHERE p1.Email = p2.EmailAND p1.Id > p2.Id;

    相关文章

      网友评论

          本文标题:数据库篇面试题精讲(高级)

          本文链接:https://www.haomeiwen.com/subject/qmyffhtx.html