2016 - 2025

感恩一路有你

mysql数据库锁有哪几种 mysql行级锁和表级锁的区别?

浏览量:3241 时间:2023-04-03 16:29:41 作者:采采

mysql行级锁和表级锁的区别?

1.程序中的非数据库交互导致事务挂起。

在SQL事务代码中嵌入接口调用或文件操作等非数据库交互操作,可能会导致整个事务挂起(接口被阻塞,等待超时或上传下载大附件)。

2.该事务包含性能不佳的查询SQL

事务中有一个慢速查询,导致同一个事务中的其他DML无法及时释放被占用的行锁,导致行锁等待。

3.单个事务包含大量SQL。

这通常是由于在事务代码中添加了一个for循环造成的。虽然单个SQL运行速度很快,但是当SQL数量很大时,事务会很慢。

4.级联更新SQL需要很长时间来执行。

这种SQL很容易给人错觉。例如,级联更新如更新一个集合...where (select B)不仅会占用表A上的行锁,还会占用表B上的行锁,当SQL长时间执行时,很容易导致表B上的行锁等待。

5.由于磁盘问题,交易暂停

在极少数情况下,比如存储突然下线,SQL执行会卡在内核调用磁盘这一步,无法提交事务。

综上所述,可以看出,如果长时间不提交事务,并且事务中包含DML操作,可能会有行锁等待,从而导致错误。

mysql写锁的原理?

一、锁的概念

锁是计算机协调多个进程或线程并发访问资源的一种机制。

二、MySQL中的锁

表级锁定:低开销和快速锁定;不会出现僵局;锁粒度大,锁的概率最高,并发性最低。

行级锁定:开销大,锁定慢;将出现死锁;锁粒度最小,锁概率最低,并发性最高。

页锁:开销和锁时间介于表锁和行锁之间;将出现死锁;锁定粒度介于表锁和行锁之间,并发性一般。

第三,米沙姆 s写锁定

1 .锁表testmysam写

在同一届会议上

插入testmysam值(3)

从testmysam中删除,其中id 3

select * from testmysam

2.在不同的表上操作(报告错误)

从testmysam s中选择s.*

插入到testdemo值(2,#392#39,#393#39)

3.在其他会话中(等待)

select * from testmysam

SQL 行锁 事务 时间 并发性

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。