试验1

事务1:

#!/usr/bin/python

import time

import MySQLdb;

conn = MySQLdb.connect(host="localhost",port=3306,user="root",passwd="asdf",db="test",unix_socket="/data/mysql_3306/mysql.sock")

cursor = conn.cursor()

cursor.execute("select * from test")

while str!="1":

str = raw_input()

cursor.execute("update test id=id-1")

while str!="exit":

str = raw_input()

cursor.close()

conn.close()

在mysql命令行中输入以下:

mysql> select * from test;

当事务1中等待输入1时,显示出select匹配的行

当事务1中输入1时,显示结果如下:

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

结论:当select时会检测当前是否有事务会修改(比影响要确切一些)当前的记录时,才会被阻塞。

试验2

在事务1:

#!/usr/bin/python

import time

import MySQLdb;

conn = MySQLdb.connect(host="localhost",port=3306,user="root",passwd="asdf",db="test",unix_socket="/data/mysql_3306/mysql.sock")

cursor = conn.cursor()

cursor.execute("select * from test lock in share mode")

while str!="exit":

str = raw_input()

cursor.close()

conn.close()

在mysql命令行中输入以下:

mysql> update test set id=id-1;

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

结论:当事务中包含select ...lock in share mode的时候,相关记录将会被锁住,不允许进行修改。

试验3

执行下面的python脚本两遍,并且同时输入1,2之后

#!/usr/bin/python

import time

import MySQLdb;

conn = MySQLdb.connect(host="localhost",port=3306,user="root",passwd="asdf",db="test",unix_socket="/data/mysql_3306/mysql.sock")

cursor = conn.cursor()

cursor.execute("select * from test lock in share mode")

str = ""

while str!="1":

str = raw_input()

while str!="2":

str = raw_input()

cursor.execute("update test set id=id-1")

while str!="exit":

str = raw_input()

cursor.close()

conn.close()

[root@TJSJHL196-139 tmp]# python test_transaction.py

1

2

Traceback (most recent call la

mysql 排他,mysql 共享锁 排他锁 防插入锁相关推荐

  1. mysql 共享锁和排他锁 意向锁 记录锁 Gap Locks Next-Key Locks 插入意向锁介绍

    文章目录 前言: 共享锁和排它锁 LOCK TABLES 和 UNLOCK TABLES 语句 意向锁 记录锁Record Locks 间隙锁 Gap Locks 下一键锁定 next-key 插入意 ...

  2. mysql锁机制——乐观锁、悲观锁;共享锁、排他锁、行表锁、间隔后码锁、MVCC 与 thinkphp的lock解析

    锁的引入 如果A有100元,同时对B.C转账,若处理是同时的,则此时同时读取A的余额为100元,在对两人转账后写回,A的余额不是0元而是50元.因此,为了防止这种现象的出现,要引入锁的概念,如只有在A ...

  3. mysql锁(全局锁、表锁、行锁、页锁、排他锁、共享锁)

    mysql锁 简介 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则. MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储 ...

  4. mysql进阶: mysql中的锁(全局锁/表锁/行锁/间隙锁/临键锁/共享锁/排他锁)

    锁在生活中处处可见,门锁,手机锁等等. 锁存在的意义是保护自己的东西不被别人偷走/修改. 在mysql中锁的意义也是一样,是为了保护自己的数据不被别人进行修改,从而导致出现脏读,幻读等问题.在学习锁的 ...

  5. mysql锁机制(共享锁(S)、排他锁(X)、意向共享锁(IS)、意向排他锁(IX)的关系,死锁,乐观锁,悲观锁...)

    1. 锁的基础与行锁的特点 1.1 概念 在开发多用户.数据库驱动的应用时,相当大的一个难点就是解决并发性的问题,目前比较常用的解决方案就是锁机制. 锁机制也是数据库系统区别于文件系统的一个关键特性. ...

  6. mysql 排它锁_Mysql共享锁、排他锁、悲观锁、乐观锁

    一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--间隙锁( ...

  7. MySQL中的共享锁与排他锁

    2019独角兽企业重金招聘Python工程师标准>>> 在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行 ...

  8. Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

    一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁( ...

  9. MySQL乐观锁、共享锁、排他锁、行锁、表锁区别和使用方法

    数据库锁分类 锁模式分类 乐观锁.悲观锁 范围锁 行锁.表锁 算法锁 临间锁.间隙锁.记录锁 属性锁 共享锁(读锁).排他锁(写锁) 状态锁 意向共享锁.意向排他锁 一.乐观锁和悲观锁 1.乐观锁介绍 ...

最新文章

  1. ionic中的ion-option-button
  2. UVA1327 King‘s Quest(强连通分量、给王子们匹配公主系列 - 1 )
  3. 土拍熔断意味着什么_半小时3宗地接连熔断 今日长沙土拍关键字:“焱”
  4. [读书] Computer Vision: Algorithms and Applications
  5. [原] XAF 添加日期筛选下拉选择
  6. 收藏 | 阿里云Redis开发规范
  7. PDGAN: A Novel Poisoning Defense Method in Federated Learning Using Generative Adversarial Network笔记
  8. 一个很有深度的C++内存问题---GDB调试(一)
  9. php编译安装swoole,PHP7 源码编译安装 Swoole 扩展
  10. Spring MVC学习总结(14)——SpringMVC测试框架之mockMVC详解
  11. 编写一个函数把华氏温度转换为摄氏温度
  12. 原子性 - synchronized关键词
  13. 中国石化股票价值线分析
  14. 部署scrapy爬虫到AWS Ubuntu 18.04,用crontab定时执行
  15. Win32窗口--XBox游戏手柄--C++--方向轮和按键捕获
  16. opencv及图像基本处理
  17. 解决pytest运行时报错ModuleNotFoundError
  18. Cocos2d-x 游戏中子弹的设计 (一)
  19. 携自游家逐浪新能源汽车赛道的李一男不想被同代人抛下
  20. 设计一个名为complex的类来表示复数_CAE必修课:结构动力优化设计

热门文章

  1. python随机抽签列表中的同学值日_神奇的大抽签--Python中的列表_章节测验,期末考试,慕课答案查询公众号...
  2. python语言程序设计及医学应用_Python语言程序设计(高等学校计算机专业规划教材)...
  3. c语言位运算+乘法,关于c语言中的位运算。。。
  4. ajax的模式_AJAX的完整形式是什么?
  5. rotate array_Array.rotate! Ruby中的示例方法
  6. Python operator.truth()函数与示例
  7. 非导向传输媒体| 计算机网络
  8. Java StreamTokenizer quoteChar()方法与示例
  9. xcode编译报错unknown error -1=ffffffffffffffff Command /bin/sh failed with exit code 1
  10. 【Python】交互式界面创建函数