MySQL高级(2):锁

一、小表驱动大表:
in 后面加小表,exists后面加大表
语法:
SELECT …FROM table WHERE EXISTS(subquery)。
将主查询的数据放到子查询中做验证,根据验证结果(TRUE或者FALSE)来决定主查询的数据结果是否保留。

二、order by优化
系统有两种排序方式using filesort 和using index,
若索引不失效则采用后者否则采用前者,
1)索引是否失效遵循最左前缀原则,
2)必须排序索引顺序必须要按顺序,
3)升降序不能混用
4)where使用索引的最左前缀并且定义为常量,即where a=const order by b,c;

三、数据库锁理论:
表锁:(myisam)
在这里插入图片描述
1、读锁:针对同一份数据,多个读操作可以同时进行而不会相会影响,该会话只能读该表,不能修改该表,不能读写其他表,其他会话修改该表会被阻塞
2、写锁:当前操作没有完成前,会阻断其他写锁和读锁
,该会话只能读写该表,不能读写其他表,其他表不能读写该表

行锁:(innodb,支持事务,采用了行锁)
其中一个会话将自动提交取消,并且正在修改其中一行数据时,其他会话不能修改该行会被阻塞,但是可以修改其他行

索引失效会导致,行锁变表锁

间隙锁:
范围筛选的话,会将满足条件的索引项加锁,中间会存在不满足条件的间隙项,其他会话也不能操作该间隙项

锁定一行:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值