iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >mysql锁表的原因有哪些
  • 215
分享到

mysql锁表的原因有哪些

2024-04-02 19:04:59 215人浏览 八月长安
摘要

这篇文章主要为大家展示了“Mysql锁表的原因有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“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锁表的原因有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: mysql锁表的原因有哪些

本文链接: https://www.lsjlt.com/news/71928.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • mysql锁表的原因有哪些
    这篇文章主要为大家展示了“mysql锁表的原因有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mysql锁表的原因有哪些”这篇文章吧。 ...
    99+
    2024-04-02
  • sqlserver锁表的原因有哪些
    数据库事务:当一个事务正在对表中的数据进行操作时,会对表进行锁定,以确保数据的一致性和完整性。 并发操作:当多个用户同时对同...
    99+
    2024-04-09
    sqlserver
  • MySQL被锁的原因有哪些
    MySQL被锁的原因主要有以下几种: 表锁:当执行锁定整个表的操作时,MySQL会将该表锁定,其他会话无法对该表进行读写操作。常...
    99+
    2023-10-24
    MySQL
  • oracle表锁死的原因有哪些
    Oracle表锁死的原因可能有以下几种:1. 长时间的事务:如果一个事务持有了某个表的锁并且不释放,在此期间其他事务也无法获取该表的...
    99+
    2023-08-23
    oracle
  • oracle频繁锁表的原因有哪些
    Oracle频繁锁表的原因可能包括以下几点:1. 并发操作:多个用户或会话同时对同一张表进行读写操作,会引发锁表。比如,同时有多个用...
    99+
    2023-08-29
    oracle
  • MySQL中出现死锁的原因有哪些
    这篇文章给大家介绍MySQL中出现死锁的原因有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。  MySQL死锁问题原因有哪些  1、MySQL常用存储引擎的锁机制  MyISAM和...
    99+
    2024-04-02
  • oracle产生死锁的原因有哪些
    Oracle产生死锁的原因主要包括以下几点:1. 互斥条件:当一个事务获取了某个资源的锁之后,其他事务无法同时获取相同资源的锁,只能...
    99+
    2023-09-05
    oracle
  • oracle死锁产生的原因有哪些
    Oracle数据库死锁产生的原因可以有以下几种: 事务并发执行:当多个事务同时访问数据库中的相同资源时,可能会产生死锁。例如,事...
    99+
    2024-04-09
    oracle
  • mysql锁表原因及解决
    mysql锁表原因及解决 问题如图 锁表发生原因 锁表发生在 insert、update、delete中;锁表的原理是数据库使用独占式锁机制,当执行上面的语句时,对表进行锁住,直到发生co...
    99+
    2023-09-01
    mysql 数据库 sql
  • Oracle中表被锁的原因及解决方法有哪些?
    标题:Oracle中表被锁的原因及解决方法 在Oracle数据库中,表被锁是数据库操作中常见的问题之一。表锁定可能会导致数据库性能下降和应用程序无法正常运行。本文将介绍Oracle中表...
    99+
    2024-03-11
    编程 oracle 解决方法 表锁 sql语句 并发访问
  • Java中死锁产生的原因有哪些?
    目录死锁产生原因解决死锁总结前言: 死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方释放资源,但没有一方提起释放资源,从而造成了一种阻塞的现...
    99+
    2024-04-02
  • Ubuntu无法获得锁的原因有哪些
    Ubuntu无法获得锁的原因可能包括以下几个方面: 其他进程或用户已经获取了锁:如果其他进程或用户已经获取了特定资源的锁,并且还...
    99+
    2023-10-25
    Ubuntu
  • MySQL并发时经典常见的死锁原因有哪些
    这篇文章主要介绍了MySQL并发时经典常见的死锁原因有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、mysql都有什么锁?MySQL...
    99+
    2024-04-02
  • 选择mysql的原因有哪些
    今天小编给大家分享一下选择mysql的原因有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下...
    99+
    2024-04-02
  • mysql创建临时表报错的原因有哪些
    创建临时表报错的原因可能有以下几种: 临时表已存在:如果同名的临时表已经存在于当前数据库中,尝试再次创建同名的临时表将会报错。 表...
    99+
    2024-04-09
    mysql
  • Python中产生死锁的原因有哪些
    Python中产生死锁的原因有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研...
    99+
    2023-06-14
  • mysql表锁和行锁有哪些区别
    小编给大家分享一下mysql表锁和行锁有哪些区别,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧! Mysql有很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁;这...
    99+
    2024-04-02
  • 数据库用户被锁的原因有哪些
    数据库用户被锁的原因可能有以下几种情况:1. 密码错误次数过多:如果用户连续多次输入错误密码,系统可能会自动将该用户锁定,以防止暴力...
    99+
    2023-09-29
    数据库
  • oracle用户频繁被锁的原因有哪些
    以下是Oracle用户频繁被锁的一些可能原因: 多次输入错误的密码:当用户多次输入错误的密码时,Oracle会自动锁定该用户账户...
    99+
    2024-04-09
    oracle
  • sqlserver用户自动锁定的原因有哪些
    SQL Server用户自动锁定的原因可能包括: 多次输入错误密码:当用户多次输入错误的密码时,SQL Server可能会自动锁...
    99+
    2024-04-09
    sqlserver
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作