1.有t_user表用户量大概500万,里面有几個字段和钱相关现在由于业务需要对表中update_time添加一个mysql添加索引会不会锁表,请问一下直接添加mysql添加索引会不会锁表,会导致线上t_user表锁表嘛
1.有t_user表用户量大概500万,里面有几個字段和钱相关现在由于业务需要对表中update_time添加一个mysql添加索引会不会锁表,请问一下直接添加mysql添加索引会不会锁表,会导致线上t_user表锁表嘛
在MySQL的使用过程中对SQL加锁的类型經常感到疑惑,这让死锁分析也变得举步维艰因此需要将MySQL的各种SQL在各个隔离级别下加的锁进行分析,以免再次分析的时候还感到疑惑吔方便用于查询。
本次分析对SQL的删除语句进行分析主要从以下几种情况进行分析:
根据非唯一mysql添加索引会不会锁表进行删除的时候,锁情况为:
根据唯一mysql添加索引会不会锁表进行删除的时候锁情况为:
根据主键进行删除的时候,锁情况为:
1 row lock(s):就主键记录上的行锁没有gap,因此为1个
根据非唯┅mysql添加索引会不会锁表删除一条 不存在 记录锁情况为:
根据唯一mysql添加索引会不会锁表刪除一条 不存在 记录,发现和非唯一mysql添加索引会不会锁表一样,锁情况为:
根据主键删除一条 不存在 记录,发现囷非唯一mysql添加索引会不会锁表一样锁情况为:
有 5 , 9 这两条记录
有 4 10 这两条记录
根据主键删除两条的时候,使用in的锁情况为:
2 row lock(s):两条主键记录上的行锁没有gap,因此为2个
根据主键删除两条的时候使用>,<,>=,<=,比较符号的锁情况为:
非唯一mysql添加索引会不会锁表删除一条已经标记删除的记录的锁情况为:
加鎖成功时:3 lock struct(s),持有IX,next key 锁和gap锁,这个和非唯一mysql添加索引会不会锁表删除一条不存在的记录是基本一样的多了个因Sess1 提交成功后多获得的next key 锁。
唯一mysql添加索引会不会锁表删除一条已经标记删除的记录的锁情况为:
加锁成功时:3 lock struct(s)持有IX,next key ,和gap锁和非唯一mysql添加索引会不会锁表删除一条标记为已删除的记录的情况一模一样。