sql:SQL优化知识点记录(十四)

(1)索引失效行锁变表锁

建立2个索引

sql:SQL优化知识点记录(十四)_第1张图片

索引是失效后,系统性能会变查,如果涉及到锁的话,行锁会变表锁

有一个问题,当session1用b字段做查询条件因为是varchar类型,需要加双引号,但是没有加,MySQL底层会做类型转换,导致这个字段建立的索引失效,此时session2在更新别的行,会出现阻塞,是因为:行锁变成了表锁

sql:SQL优化知识点记录(十四)_第2张图片

session1提交后session2才能读取到: 

sql:SQL优化知识点记录(十四)_第3张图片 然后session2再提交(commmit)就能获取到最新数据:

sql:SQL优化知识点记录(十四)_第4张图片

 

如果session2的字段值没有写错:

sql:SQL优化知识点记录(十四)_第5张图片

session2提交后在查询:可以获取更新的数据:

sql:SQL优化知识点记录(十四)_第6张图片

(2)间隙锁危害

比如session1曹锁1-6的数据,中间没有2,在session2中插入2的这条数据,按理说这两边是不想管的,不会影响,但是session2回车后会阻塞 

sql:SQL优化知识点记录(十四)_第7张图片

 session1提交后,session2才能完成插入操作:sql:SQL优化知识点记录(十四)_第8张图片

session2提交后,session1在点击查看

sql:SQL优化知识点记录(十四)_第9张图片

sql:SQL优化知识点记录(十四)_第10张图片

(3)如何锁定某一行

sql:SQL优化知识点记录(十四)_第11张图片

sql:SQL优化知识点记录(十四)_第12张图片

session1给8号上锁后,没有提交之前,session2没有上锁

sql:SQL优化知识点记录(十四)_第13张图片

sql:SQL优化知识点记录(十四)_第14张图片

 sql:SQL优化知识点记录(十四)_第15张图片

(4)行锁总结

sql:SQL优化知识点记录(十四)_第16张图片

sql:SQL优化知识点记录(十四)_第17张图片

sql:SQL优化知识点记录(十四)_第18张图片

sql:SQL优化知识点记录(十四)_第19张图片

 sql:SQL优化知识点记录(十四)_第20张图片

 

你可能感兴趣的:(数据库知识点总结,数据库)