链接地址:http://blog.sina.com.cn/s/blog_7fa2bcf50101j1lu.html

表级锁:

加写锁:

         lock   tables   table_name   read;//其他事务只能读,不能加写锁,要等待更新。

加读锁:

        lock   tables   table_name write;//其他事务不能读

解锁:

        unlock  tables;

---------------------------------------------

行级锁:行锁是对索引加锁

id    num

0 100

1 500

5 1000

例1.

事务1:set autocommit = off;

update test set num = 200 where id = 5; 

事务2:select * from test where id=5;可读,得到5 1000;

 

例2.

事务1:set autocommit = off;

update test set num = 200 where id = 5; 

事务2:set autocommit = off;

update test set num = 200 where id = 5;事务2等待事务1提交了才能更新。

例3.

事务1:set autocommit = off;

update test set num = 200 where id = 5; 

事务2:set autocommit = off;

update test set num = 200 where id = 6;事务2不用等待

例4.

事务1:set autocommit = off;

update test set num = 200 where id = 5; 

事务2:insert test (id) value (5);事务2等待,事务1提交后,事务2报错Duplicate entry '5' for key 'PRIMARY'

例5.

事务1:set autocommit = off;

update test set num = 200 where id = 5; 

事务2:insert test (id) value (6);事务2不用等待;

例6.

事务1:insert test (id) value (8); 

事务2:insert test (id) value (9);事务2不用等待;

 

由上可知为什么说行锁是对索引加锁。

MYSQL—加写锁,加读锁,解锁的更多相关文章

  1. 读时加写锁,写时加读锁,Eureka可真的会玩

    大家好,我是三友~~ 在对于读写锁的认识当中,我们都认为读时加读锁,写时加写锁来保证读写和写写互斥,从而达到读写安全的目的.但是就在我翻Eureka源码的时候,发现Eureka在使用读写锁时竟然是在读 ...

  2. MySQL 5.5加主键锁读问题【转载】

    背景      有同学讨论到MySQL 5.5下给大表加主键时会锁住读的问题,怀疑与fast index creation有关,这里简单说明下. 对照现象          为了说明这个问题的原因,有 ...

  3. mysql查询锁表及解锁

    SHOW PROCESSLIST; KILL ; 锁表网上解释: 这牵涉到mysql的事务,简单通俗的话,就这样给你解释有一个任务序列控制sql语句的执行,第一次有select的语句查询表a,mysq ...

  4. Mysql读写锁保姆级图文教程

    摘要:读锁会阻塞写,但是不会阻塞读,而写锁会把杜希俄都阻塞. 本文分享自华为云社区<Mysql保姆级读写锁图文教程丨[绽放吧!数据库]>,作者:Code皮皮虾 . 准备 创建mylock表 ...

  5. qq加好友加群限制ip怎么解决

    目前各样格式的推广都会用到腾讯QQ,现在就遇到了问题.QQ加好友加群,经常会提示你的账号存在不安全因素,暂停加好友功能.这个原因都是本地同一个IP,登陆的QQ过多,加好友过多.导致这个IP被记录,相当 ...

  6. 扫描仪扫描文件处理-ABBYY对扫描版PDF文字加黑加粗、去除背景漂白

    1. 设置ABBYY自动歪斜矫正: 2. 设置导出PDF参数: 3. PDF文字加黑加粗.去除背景漂白步骤:3.1 ABBYY - 打开扫描版PDF文档3.2 ABBYY - 编辑图像3.3 等级 - ...

  7. 实战演示疑惑 mysql insert到底加什么锁

    innodb的事务隔离级别是可重复读级别且innodb_locks_unsafe_for_binlog禁用,也就是说允许next-key lock 实验来自网上. ( 如果你没有演示出来,请check ...

  8. mysql热数据加载管理

    5.6版本之后,提供了一个新特性来快速预热buffer_pool缓冲池.在my.cnf里面加入几个参数: innodb_buffer_pool_dump_at_shutdown = 1   --在关闭 ...

  9. MySQL中大数字加减,不产生千位符和科学计数

    mysql数字加减科学计数法 这两天因为需求,需要获取一张表的流水号.规则是这样的.当前日期+8位流水号.比如:2015062400000001,2015062400000002,2015062400 ...

随机推荐

  1. C语言入门(1)——C语言概述

    1.程序与编程语言 我们使用计算机离不开程序,程序告诉计算机应该如何运行.程序(Program)是一个精确说明如何进行计算的指令序列.这里的计算可以是数学运算,比如通过一些数学公式求解,也可以是符号运 ...

  2. cdoj 斐波那契进制

    //昨天在姜神的提醒下发现这种方法可以解决升级版的 非升级版直接01背包就好 //这题脑洞开得真是够大 解:大概要先把数分解成斐波拉契进制,x=f1*(0或1)+f2*(0或1)+...+fn*(0或 ...

  3. 链表-Partition List

    struct ListNode* partition(struct ListNode* head, int x) { struct ListNode *p1=(struct ListNode*)mal ...

  4. UI_拖动View

    方法一 在touchesMoved中 // 获取到触摸的手指 UITouch *touch = [touches anyObject]; // 获取集合中对象 // 获取開始时的触摸点 CGPoint ...

  5. 权威指南之脚本化http

    使用javascript代码操作http是可行的.当用脚本设置window对象的location属性或调用表单对象的submit方法时,都会初始化http请求.这两种情况下,浏览器会加载新页面. aj ...

  6. JavaSE思维导图(七)

  7. C# Attribute(特性)之---数据契约 [DataContract]

    服务契约定义了远程访问对象和可供调用的方法,数据契约则是服务端和客户端之间要传送的自定义数据类型. 一旦声明一个类型为DataContract,那么该类型就可以被序列化在服务端和客户端之间传送,如下所 ...

  8. The type javax.servlet.http.HttpServletRequest cannot be resolved.

    The type javax.servlet.http.HttpServletRequest cannot be resolved. It is indirectly referenced from ...

  9. 一道面试题细说C++类型转换

    开篇先说这道面试题: class ClassA { public: virtual ~ ClassA() { } virtual void FunctionA() { } }; class Class ...

  10. Hibernate学习之Hibernate流程

    Hibernate的核心组件 在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate. ...