我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql锁表的原因有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql锁表的原因有哪些

这篇文章主要为大家展示了“mysql锁表的原因有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql锁表的原因有哪些”这篇文章吧。

在mysql中,锁表的原因是一个程序执行了对表的insert、update或者delete操作还未commite时,另一个程序也对同一个表进行相同的操作,则此时会发生资源正忙的异常,也就是锁表。

本教程操作环境:windows10系统、mysql8.0.22版本、Dell G3电脑。

mysql锁表的原因有哪些

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

在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。

如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。

从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

锁表的原因

1、锁表发生在insert update 、delete 中

2、锁表的原理是 数据库使用独占式封锁机制,当执行上面的语句时,对表进行锁住,直到发生commite 或者 回滚 或者退出数据库用户

  第一、 A程序执行了对 tableA 的 insert ,并还未 commite时,B程序也对tableA 进行insert 则此时会发生资源正忙的异常 就是锁表

  第二、锁表常发生于并发而不是并行(并行时,一个线程操作数据库时,另一个线程是不能操作数据库的,cpu 和i/o 分配原则)

3、减少锁表的概率:

  减少insert 、update 、delete 语句执行 到 commite 之间的时间。

  具体点批量执行改为单个执行、优化sql自身的非执行速度 如果异常对事物进行回滚

示例如下:

使用 update

  假设kid 是表table 的 一个索引字段 且值不唯一:

  1):如果kid 有多个值为12的记录那么:

    update table set name=’feie’ where kid=12;   #会锁表

  2):如果kid有唯一的值为1的记录那么:

    update table set name=’feie’ where kid=1;   #不会锁

总结:用索引字段做为条件进行修改时, 是否表锁的取决于这个索引字段能否确定记录唯一,当索引值对应记录不唯一,会进行锁表,相反则行锁。

使用 delete

  如果有两个delete : kid1 与 kid2 是索引字段

  1):语句1 delete from table where kid1=1 and kid2=2;

  2):语句2 delete from table where kid1=1 and kid2=3;

      # 这样的两个delete 是不会锁表的

  1):语句1 delete from table where kid1=1 and kid2=2;

  2):语句2 delete from table where kid1=1 ;

      # 这样的两个delete 会锁表

以上是“mysql锁表的原因有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql锁表的原因有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

sqlserver锁表的原因有哪些

数据库事务:当一个事务正在对表中的数据进行操作时,会对表进行锁定,以确保数据的一致性和完整性。并发操作:当多个用户同时对同一张表进行读写操作时,可能会出现锁冲突,导致表被锁定。索引操作:当对表中的索引进行维护、重建或重组时,会对表进行锁定,
sqlserver锁表的原因有哪些
2024-04-09

MySQL被锁的原因有哪些

MySQL被锁的原因主要有以下几种:表锁:当执行锁定整个表的操作时,MySQL会将该表锁定,其他会话无法对该表进行读写操作。常见的情况是使用LOCK TABLES语句或者ALTER TABLE语句。行锁:当多个会话同时对同一行数据进行操作时
2023-10-24

oracle表锁死的原因有哪些

Oracle表锁死的原因可能有以下几种:1. 长时间的事务:如果一个事务持有了某个表的锁并且不释放,在此期间其他事务也无法获取该表的锁,导致锁死。2. 锁争用:多个事务同时竞争同一个表的某个资源(如行、页或表级锁),如果锁争用激烈,可能导致
2023-08-23

oracle频繁锁表的原因有哪些

Oracle频繁锁表的原因可能包括以下几点:1. 并发操作:多个用户或会话同时对同一张表进行读写操作,会引发锁表。比如,同时有多个用户对某一张表进行UPDATE或DELETE操作。2. 长事务:一个事务在执行期间持有锁,并且持有锁的时间很长
2023-08-29

oracle死锁产生的原因有哪些

Oracle数据库死锁产生的原因可以有以下几种:事务并发执行:当多个事务同时访问数据库中的相同资源时,可能会产生死锁。例如,事务A锁定了资源X并请求资源Y,而事务B锁定了资源Y并请求资源X,这样就会导致死锁。锁等待超时:当事务等待获取锁的时
oracle死锁产生的原因有哪些
2024-04-09

oracle产生死锁的原因有哪些

Oracle产生死锁的原因主要包括以下几点:1. 互斥条件:当一个事务获取了某个资源的锁之后,其他事务无法同时获取相同资源的锁,只能等待该资源的释放。2. 请求与保持条件:当一个事务持有了某个资源的锁,并且在请求其他资源的锁时,如果请求不到
2023-09-05

Oracle中表被锁的原因及解决方法有哪些?

标题:Oracle中表被锁的原因及解决方法在Oracle数据库中,表被锁是数据库操作中常见的问题之一。表锁定可能会导致数据库性能下降和应用程序无法正常运行。本文将介绍Oracle中表被锁的原因,并提供解决此问题的具体代码示例。原因表被
Oracle中表被锁的原因及解决方法有哪些?
2024-03-11

Python中产生死锁的原因有哪些

Python中产生死锁的原因有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研
2023-06-14

mysql创建临时表报错的原因有哪些

创建临时表报错的原因可能有以下几种:临时表已存在:如果同名的临时表已经存在于当前数据库中,尝试再次创建同名的临时表将会报错。表名或列名不符合规范:表名和列名需要遵循MySQL的命名规范,例如不能包含特殊字符、关键字以及长度限制等。数据库
mysql创建临时表报错的原因有哪些
2024-04-09

Ubuntu无法获得锁的原因有哪些

Ubuntu无法获得锁的原因可能包括以下几个方面:其他进程或用户已经获取了锁:如果其他进程或用户已经获取了特定资源的锁,并且还没有释放,那么当前进程将无法获得相同的锁。文件或目录没有适当的权限:如果当前用户没有足够的权限来访问或修改文件或目
2023-10-25

数据库发生死锁的原因有哪些

数据库发生死锁的原因有以下几个:1. 竞争资源:多个事务同时竞争同一资源,如表、行、索引等。当多个事务同时请求同一资源,并且每个事务持有了其他事务需要的资源,就可能发生死锁。2. 事务顺序的交错:当多个事务按照不同的顺序执行时,可能会导致死
2023-09-22

oracle用户频繁被锁的原因有哪些

以下是Oracle用户频繁被锁的一些可能原因:多次输入错误的密码:当用户多次输入错误的密码时,Oracle会自动锁定该用户账户以保护系统安全。用户并发操作:如果一个用户在执行一个长时间运行的操作时被另一个用户尝试访问,那么Oracle可能会
oracle用户频繁被锁的原因有哪些
2024-04-09

数据库用户被锁的原因有哪些

数据库用户被锁的原因可能有以下几种情况:1. 密码错误次数过多:如果用户连续多次输入错误密码,系统可能会自动将该用户锁定,以防止暴力破解密码的攻击。2. 账号过期:如果用户的账号设置了过期时间,并且已经超过了账号的有效期限,则用户可能会被系
2023-09-29

sqlserver用户自动锁定的原因有哪些

SQL Server用户自动锁定的原因可能包括:多次输入错误密码:当用户多次输入错误的密码时,SQL Server可能会自动锁定该用户账户以防止未经授权的访问。安全策略设置:管理员可能会设置安全策略,如密码过期、密码复杂性要求等,当用户未按
sqlserver用户自动锁定的原因有哪些
2024-04-09

编程热搜

目录