w

wnwk

V1

2022/12/06阅读:50主题:默认主题

mysql备忘录

mysql

X锁(排他锁) S锁(共享锁) ,行级锁

  • 如果事务A 获取到了 row r的S锁,其它事务可以获取S锁,但是不可以获取X锁,
  • 如果事务A 获取了 row r 的X锁,其它事务无法获取到X或S锁,只有等待事务A释放X 锁后,才可以获取到锁

意向锁 IX,IS,表级锁,用于记录表内的某行加锁了

  • IX(意向排他锁),记录表内的某行记录加了 X 锁。如果要获取X锁,必须先获取到IX 锁。
  • IS(意向共享锁),记录表内的某行记录加了 S 锁,如果要获取S 锁,必须要先获取到 IS 或IX锁

锁兼容表

  • X锁是行级锁排他锁, 所以 X锁 和 其它的锁都不兼容。
  • IX ,IS 锁是 表级锁,表级锁表示的是有某行被加上了行级锁,所以表级锁之间是兼容的。
  • IX 是表级排他锁,所以和 X ,S 锁冲突。
  • IS 是表级共享锁,只会和X 锁冲突

最佳索引

  • 全值匹配索引,创建a,b,c 三个索引,where 条件匹配全部的索引 ,如果全部匹配和where 条件的顺序无关。
  • 最左匹配原则,where 条件的命中创建的索引,不能跳过某个索引,假设 索引为 a,b,c,where 条件中要么 全部匹配索引,要么按照 索引的定义的顺序来匹配
  • 不要在索引字段进行计算
  • 范围查询导致右边的索引失效,比如 a,b,c三个索引,如果 b 使用了 范围查询,导致 c索引失效
  • !<> 导致索引失效
  • is not null 是索引失效
  • or 使索引失效
  • like 如果%在左边 索引失效
  • 覆盖索引可以提高查询效率: select 中包含索引字段就是覆盖索引,select 中不要使用 *
  • order by 最好使用覆盖索引,最好保证 索引的顺序

explain

  • row 表示检索了多少条记录
  • extra 中出现 using filesort 要优化。

分类:

后端

标签:

后端

作者介绍

w
wnwk
V1