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