1、Lock 锁
    XLock:排它锁,也叫写锁。
    若事务T对数据加上X锁,则事务T可以对该数据进行读写操作,其他事务不能对该数据进行读写操作,也不能加锁,直到事务T释放锁。
    SLock:共享锁,也叫读锁,
    若事务T对数据加上S锁,则事务T可以对数据进行读操作,不能写。其他事务只可以对该数据加S锁,不能加X锁,直到事务T释放该锁。

    X锁和S锁都是行锁,一行数据可以有多个S锁,但只能有一个X锁。

    2、阻塞和死锁
    一个事务中的锁需要等待另一个事务中的锁释放资源就叫做阻塞。
    两个或多个事务在执行过程中,因为争夺锁资源而互相等待就叫做死锁

    3、死锁解决办法

    • 超时回滚,事务等待的时间超过设置的阈值就会自动回滚,其他的事务就可以正常执行了。
    • wait-for graph (等待图),是一种主动的死锁检查方式,事务在请求锁并发生等待时会自动去检查是否存在回路,有则说明发生死锁,系统默认会回滚undo量最少的事务。

    4、影响死锁概率的因数

    • 系统中事务的数量,越多发生死锁的概率越高。
    • 事务中操作的数量,操作的越多发生概率越高。
    • 操作数据的集合,越小发生概率越高。

    5、索引的有点

    • 加快了查询表的速度。
    • 建立唯一索引,保证了表中每一行数据的唯一性。
    • 加快了表与表之间连接。
    • 在使用分组和排序查询时,加速了查询时分组和排序的速度。

    6、索引的缺点

    • 索引需要占用物理空间。
    • 在对数据进行增删改时同时也会动态的维护索引,增加了数据库的维护难度。

    7、mysql中的几种索引

    • 普通索引
    • 唯一索引,索引列的值必须是唯一,可以为空值,组合索引时必须组合唯一。
    • 主键索引,特殊的唯一索引,一个表只能有一个主键索引,不能为空。
    • 组合索引,在多个字段上创建索引。
    • 全文索引

    8、聚簇索引和非聚簇索引
    一般情况下,主键会创建聚簇索引,一张表只允许有一个聚簇索引。
    聚簇索引是顺序结构与数据存储的物理结构一致的一种索引,并且一个表只能有一个聚簇索引。
    非聚簇索引就是物理结构和逻辑结构没有关联,与数据存储的物理结构也没有关联,一张表可以有多个非聚簇索引。