数据库锁有了解么?行级锁?表级锁?共享锁?排他锁?gap锁?next-key lock?
    MySQL中的行级锁,表级锁,页级锁
    MySQL中的共享锁与排他锁
    数据库锁和隔离级别有什么关系?
    很多DBMS定义了多个不同的“事务隔离等级”来控制锁的程度和并发能力。
    ANSI/ISO SQL定义的标准隔离级别有四种,从高到底依次为:可序列化(Serializable)、可重复读(Repeatable reads)、提交读(Read committed)、未提交读(Read uncommitted)。
    深入分析事务的隔离级别
    数据库锁和索引有什么关系?
    在MySQL中,行级锁并不是直接锁记录,而是锁索引。索引分为主键索引和非主键索引两种,如果一条sql语句操作了主键索引,MySQL就会锁定这条主键索引;如果一条语句操作了非主键索引,MySQL会先锁定该非主键索引,再锁定相关的主键索引。
    什么是聚簇索引?非聚簇索引?最左前缀是什么?B+树索引?联合索引?回表?
    主键索引的叶子节点存的是整行数据。在InnoDB中,主键索引也被称为聚簇索引(clustered index)
    非主键索引的叶子节点的内容是主键的值,在InnoDB中,非主键索引也被称为非聚簇索引(secondary index)
    当我们创建一个联合索引的时候,如(key1,key2,key3),相当于创建了(key1)、(key1,key2)和(key1,key2,key3)三个索引,这就是最左匹配原则。
    在 InnoDB 里,索引B+ Tree的叶子节点存储了整行数据的是主键索引。而索引B+ Tree的叶子节点存储了主键的值的是非主键索引。因为主键索引树的叶子节点直接就是我们要查询的整行数据了。而非主键索引的叶子节点是主键的值,查到主键的值以后,还需要再通过主键的值再进行一次查询,这个过程叫做回表。
    我以为我对Mysql索引很了解,直到我遇到了阿里的面试官