mysql锁表和解锁语句分享

对于MySQL来说,有三种锁的级别:页级、表级、行级

页级的典型代表引擎为BDB。
表级的典型代表引擎为MyISAM,MEMORY以及很久以前的ISAM。
行级的典型代表引擎为INNODB。
-我们实际应用中用的最多的就是行锁。
行级锁的优点如下:
1)、当很多连接分别进行不同的查询时减小LOCK状态。
2)、如果出现异常,可以减少数据的丢失。因为一次可以只回滚一行或者几行少量的数据。
行级锁的缺点如下:
1)、比页级锁和表级锁要占用更多的内存。
2)、进行查询时比页级锁和表级锁需要的I/O要多,所以我们经常把行级锁用在写操作而不是读操作。
3)、容易出现死锁。
对于写锁定如下:
1)、如果表没有加锁,那么对其加写锁定。
2)、否则,那么把请求放入写锁队列中。
对于读锁定如下:
1)、如果表没有加写锁,那么加一个读锁。
2)、否则,那么把请求放到读锁队列中。
当然我们可以分别用low_priority 以及high_priority在写和读操作上来改变这些行为。

如果想要在一个表上做大量的 INSERT 和 SELECT 操作,但是并行的插入却不可能时,可以将记录插入到临时表中,然后定期将临时表中的数据更新到实际的表里。可以用以下命令实现:

mysql> LOCK TABLES real_table WRITE, insert_table WRITE;
mysql> INSERT INTO real_table SELECT * FROM insert_table;
mysql> TRUNCATE TABLE insert_table;
mysql> UNLOCK TABLES;
InnoDB 使用行级锁,BDB 使用页级锁。对于 InnoDB 和 BDB 存储引擎来说,是可能产生死锁的。这是因为 InnoDB 会自动捕获行锁,BDB 会在执行 SQL 语句时捕获页锁的,而不是在事务的开始就这么做。
行级锁的优点有:

在很多线程请求不同记录时减少冲突锁。
事务回滚时减少改变数据。
使长时间对单独的一行记录加锁成为可能。
行级锁的缺点有:

比页级锁和表级锁消耗更多的内存。
当在大量表中使用时,比页级锁和表级锁更慢,因为他需要请求更多的所资源。
当需要频繁对大部分数据做 GROUP BY 操作或者需要频繁扫描整个表时,就明显的比其它锁更糟糕。
使用更高层的锁的话,就能更方便的支持各种不同的类型应用程序,因为这种锁的开销比行级锁小多了。
表级锁在下列几种情况下比页级锁和行级锁更优越:

很多操作都是读表。
在严格条件的索引上读取和更新,当更新或者删除可以用单独的索引来读取得到时:

UPDATE tbl_name SET column=value WHERE unique_key_col=key_value;
DELETE FROM tbl_name WHERE unique_key_col=key_value;
SELECT 和 INSERT 语句并发的执行,但是只有很少的 UPDATE 和 DELETE 语句。
很多的扫描表和对全表的 GROUP BY 操作,但是没有任何写表。
表级锁和行级锁或页级锁之间的不同之处还在于:
将同时有一个写和多个读的地方做版本(例如在MySQL中的并发插入)。也就是说,数据库/表支持根据开始访问数据时间点的不同支持各种不同的试图。其它名有:时间行程,写复制,或者是按需复制。
代码如下:
//执行SQL语句 锁掉stat_num表
$sql = “LOCK TABLES stat_num WRITE”; //表的WRITE锁定,阻塞其他所有mysql查询进程
$DatabaseHandler->exeCute($sql);
//执行更新或写入操作
$sql = “UPDATE stat_num SET `correct_num`=`correct_num`+1 WHERE stat_date='{$cur_date}'”;
$DatabaseHandler->exeCute($sql);
//当前请求的所有写操作做完后,执行解锁sql语句
$sql = “UNLOCK TABLES”;
$DatabaseHandler->exeCute($sql);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1681971.html

(0)
上一篇 2025年2月19日 10:54:54
下一篇 2025年2月19日 10:55:09

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 如何在谷歌地图上使用一目了然的方向

    在发布一年后,谷歌地图推出了一项新的功能。一旦您在地图上设置了目的地的路线,它就会总结您的旅行路线。旅程开始后,您可以从手机锁定屏幕“浏览”路线导航。 您可以使用Google地图来查看您的预计到达时间和路线。在整个旅行期间,您可以在锁定屏幕…

    2025年3月6日 互联网
    200
  • 美版手机解锁更简单:FCC 发布拟议规则,要求运营商在激活 60 天内解锁

    感谢网友 西窗旧事 的线索投递! 7 月 19 日消息,美国联邦通信委员会(fcc)于当地时间 7 月 18 日提议,要求运营商在客户手机激活后 60 天内为其解锁。 FCC 提议新规则,简化手机解锁流程 1. 增强消费者选择 FCC 宣布…

    2025年3月6日
    200
  • realme 真我公示解锁 BL 规则:每月释放 200 名额,详细教程上线

    感谢网友 coje_he 提供的线索!realme 官方于12月17日发布公告,正式公布了bootloader解锁规则:每月限额200个,采用申请审核制。 Bootloader是在操作系统内核启动前运行的程序,负责初始化硬件、建立内存映射,…

    2025年3月6日
    200
  • 赛睿键盘锁住了怎么解锁

    赛睿键盘如果说锁住了话,有可能是因为我们的电脑外接过键盘,然后按下numlock进行解锁,我们也可以按下fn+numlock,下面我们一起来看一下吧。 赛睿键盘锁住了怎么解锁: 1、可能是外接过键盘 我们可以按下numlock锁定,我们可以…

    2025年3月6日
    200
  • PyCharm激活:揭秘快速解锁所有功能

    PyCharm激活方法大揭秘:快速解锁全功能,需要具体代码示例 PyCharm是一款由JetBrains公司开发的强大的Python集成开发环境,拥有丰富的功能和强大的调试能力,受到了广大开发者的喜爱。然而,有些开发者可能会遇到激活问题,导…

    2025年3月5日
    200
  • win102004版本注册表解锁方法

    我们在安装升级了win102004版本系统之后,如果因为一些情况需要我们打开系统的注册表,但是不知道win102004版本注册表是怎么解锁的。对于这个问题小编觉得我们可以在本地组策略编辑器中进行相关的项修改设置即可解决问题。详细操作步骤就来…

    2025年3月5日 互联网
    200
  • 女子 iPhone 4s 被锁后等 10 年终于解锁 充上电还能用

    9 月 22 日,一江苏女生在社交平台上发布一视频,称自己锁了十年的 iphone 4s 终于要解锁了。 iPhone 4s 十年解锁 视频画面中,该女生表示: 她的 iPhone 4s 手机于 2015 年被锁定。锁定时间显示为 8 万多…

    2025年3月2日
    200
  • 谷歌优化安卓自设位置保持解锁功能 提升操作便捷与直观性

    谷歌安卓系统“可信位置”功能迎来重大升级,为用户带来更便捷的手机解锁体验!此功能允许用户在地图上设置多个虚拟围栏,手机在围栏内即可保持解锁状态,无需频繁操作。 过去,“可信位置”功能隐藏较深,查找不便。此次更新将其移至更易访问的系统设置菜单…

    2025年3月2日
    200
  • Go语言的死锁与解锁

    go语言的死锁与解锁 Go语言是一门高效且具有并发特性的编程语言,能够让开发者更加轻松地处理并发编程问题。但是,由于并发编程本身就涉及到诸多的复杂性和难点,所以在使用Go语言进行并发编程时,我们也需要格外注意一些细节和陷阱。其中,死锁问题便…

    编程技术 2025年3月2日
    200
  • win11硬盘加密了怎么解锁

    win11硬盘加密了怎么解锁 随着科技的不断进步,互联网的普及和信息安全的重要性也日益凸显。为了保护个人和机构的数据安全,许多用户选择对硬盘进行加密。然而,在日常使用中,我们可能会遇到一些问题,比如忘记了硬盘的解锁密码。本文将介绍一些解锁W…

    互联网 2025年2月28日
    200

发表回复

登录后才能评论