mysql中的锁的指令_mysql中的锁

MYSQL不同的存储引擎支持不同的锁的机制

MyISAM 支持表锁,InnoDB支持表锁和行锁

表锁,行锁比较

表锁:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低

行锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高

表锁适合以查询为主,修改较少的情况;行锁适合大数量并发修改和查询的情况.

MyISAM

1.MyISAM表级锁的锁模式

MyISAM的表级锁有两种模式:表共享读锁(Table Read Lock)和表独占写锁(Table Write Lock)。锁模式的兼容性:

对MyISAM表的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求;

对MyISAM表的写操作,则会阻塞其他用户对同一表的读和写操作;

MyISAM表的读操作与写操作之间,以及写操作之间是串行的。当一个线程获得对一个表的写锁后,只有持有锁的线程可以对表进行更新操作。其他线程的读、写操作都会等待,直到锁被释放为止。

2.如何加表锁

MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁,这个过程并不需要用户干预,因此,用户一般不需要直接用LOCK TABLE命令给MyISAM表显式加锁。

innoDB

innoDB锁概念

共享锁:也叫读锁,简称S锁,原理:一个事务获取了一个数据行的共享锁,其他事务能获得该行对应的共享锁,但不能获得排他锁,即一个事务在读取一个数据行的时候,其他事务也可以读,但不能对该数据行进行增删改。

排他锁:也叫写锁,简称x锁,原理:一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁(排他锁或者共享锁),即一个事务在读取一个数据行的时候,其他事务不能对该数据行进行增删改查。

意向共享锁,简称IS,其作用在于:通知数据库接下来需要施加什么锁并对表加锁。如果需要对记录A加共享锁,那么此时innodb会先找到这张表,对该表加意向共享锁之后,再对记录A添加共享锁。

意向排他锁,简称IX,其作用在于:通知数据库接下来需要施加什么锁并对表加锁。如果需要对记录A加排他锁,那么此时innodb会先找到这张表,对该表加意向排他锁之后,再对记录A添加共享锁。

设置共享锁和排他锁

设置共享锁:SELECT ... LOCK IN SHARE MODE;

设置排他锁:SELECT ... FOR UPDATE;

注意点

对于select 语句,innodb不会加任何锁,也就是可以多个并发去进行select的操作,不会有任何的锁冲突,因为根本没有锁。

对于insert,update,delete操作,innodb会自动给涉及到的数据加排他锁,只有查询select需要我们手动设置排他锁。

行锁的实现方式

InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的。InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁!在实际应用中,要特别注意InnoDB行锁的这一特性,不然的话,可能导致大量的锁冲突,从而影响并发性能。

由于MySQL的行锁是针对索引加的锁,不是针对记录加的锁,所以虽然是访问不同行的记录,但是如果是使用相同的索引键,是会出现锁冲突的

当表有多个索引的时候,不同的事务可以使用不同的索引锁定不同的行,另外,不论是使用主键索引、唯一索引或普通索引,InnoDB都会使用行锁来对数据加锁。如果不同的索引碰巧都落到了同一个行上,那么同样会阻塞。

即便在条件中使用了索引字段,但是否使用索引来检索数据是由MySQL通过判断不同执行计划的代价来决定的,如果MySQL认为全表扫描效率更高,比如对一些很小的表,它就不会使用索引,这种情况下InnoDB将使用表锁,而不是行锁。因此,在分析锁冲突时,别忘了检查SQL的执行计划,以确认是否真正使用了索引。

mysql发生死锁的原因

两个以上的进程session进行资源争夺造成的互相等待的状况

解除正在死锁的状态有两种方法:

第一种:

1.查询是否锁表

show OPEN TABLES where In_use > 0;

2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程)

show processlist

3.杀死进程id(就是上面命令的id列)

kill id

第二种:

1.查看下在锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

2.杀死进程id(就是上面命令的trx_mysql_thread_id列)

kill 线程ID

例子:

查出死锁进程:SHOW PROCESSLIST

杀掉进程 KILL 420821;

其它关于查看死锁的命令:

1:查看当前的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;

2:查看当前锁定的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;

3:查看当前等锁的事务

SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;

https://blog.csdn.net/puhaiyang/article/details/72284702

乐观锁和悲观锁是一个大的概念

共享锁(S锁),排它锁(X锁)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

张建锋:一两年内,阿里巴巴100%的业务都会上公共云

3月21日,在2019阿里云峰会北京站上,阿里云智能总裁张建锋在主题演讲中表示,“全站云化”的时代已经到来,整个阿里经济体正在All In Cloud,成为“云上的阿里巴巴”。 张建锋表示,“目前阿里巴巴60%到70%是跑…

你抢的不是春节红包而是云

作者 | 马超编辑 | 胡巍巍来源 | CSDN(ID:CSDNnews)近年来,红包大战堪称是新春佳节中最精彩的开年大戏。2015年腾讯以超过5000万元的天价,拿下央视春晚独家合作权,一夜之间为微信支付带来1亿多张新增银行卡…

PLSQL查询字段为科学计数法,修正显示

打开PLSQL工具— toad中->view->option->data->display large number in scientific notation pl/sql developer中->tools->preferences->sql windows->number fields tochar 在PLSQL中,数据库中记录的NUMBER类型的数据,如果…

阿里云不做SaaS、要练好内功被集成,发布SaaS加速器

在3月21日的2019阿里云峰会北京上,阿里云发布新产品SaaS加速器:人工智能、虚拟现实等技术能力被集成为模块,ISV和开发者只要简单拖拽,就可以快速搭建SaaS应用。 “我想试驾一下,怎么办?” “我们集成了虚拟…

java synchronized块_Java多线程同步代码块Synchronized

Java多线程同步代码块SynchronizedJava中的每个对象都有一个与之关联的内部锁(Intrinsic lock). 这种锁也称为监视器(Monitor), 这种内部锁是一种排他锁,可以保障原子性,可见性与有序性。内部锁是通过synchronized关键字实现的.synchronized关键字修饰代码块,修饰该方法。修饰代…

阿里云明确生态边界:不做SaaS、被集成

“练好内功被集成,阿里云自己不做SaaS,让大家来做更好的SaaS。”3月21日,在2019阿里云峰会北京现场,阿里云智能总裁张建锋首次明确阿里云的生态边界和被集成战略。 大会舞台上,张建锋与20多位合作伙伴代表一一握手相迎…

windows mysql5.7 忘记root密码

编辑此文件 添加一行 skip-grant-tables重新启动mysql net stop mysql net start mysql跳过密码登陆 mysql -u root -p 直接按回车2次 修改密码 update mysql.user set authentication_stringpassword("root") where user"root";刷新权限 flush pri…

Docker容器资源管理,你真的学会了吗?

作者 | 张晋涛编辑 | 胡巍巍来源 | GitChat(ID:GitChat)Docker 上手很容易,但如果将其应用于生产环境,则需要对它有更深入的理解。只有这样,才能确保应用符合我们的预期,或在遇到问题时可及时解…

阿里CTO:阿里所有技术和产品输出都将必须通过阿里云进行

3月21日,在2019阿里云峰会北京站。特别转载一些来自媒体的报道,增加更多视角。 来自澎湃新闻,标题为《阿里所有技术和产品输出都将必须通过阿里云进行》 。 阿里巴巴旗下阿里云事业群升级为阿里云智能事业群后,3月21日&#xff0…

java封装原则_跟我学java编程—理解Java面向对象的封装原则

前面一节内容讲到了抽象与对象,抽象是把同类事物的共同特征抽取出来归纳为类,类的具体实例为对象。例如:把具有汁液多、糖分多、含有挥发性芳香物质、可以生食等特征的事物归纳为水果类,苹果、葡萄、生梨则为水果类的具体示例对象…

天桥调参师秘籍:一份深度学习超参微调技术指南

随着深度学习的兴起,越来越多的人从事算法工程师这一岗位。有时候他们自嘲自己为“天桥调参师”。当然,算法工程师的工作内容并没有那么简单,因为设置超参数的过程需要专业知识和广泛的试验和试错过程。尤其是针对学习率(learning…

Springboot集成axis1.4

文章目录1. 引入依赖2. Servlet3.接口4.实现类5.配置工厂6.启动类7. server-config.wsdd8. 访问1. 引入依赖 <!--axis start --><dependency><groupId>org.apache.axis</groupId><artifactId>axis</artifactId><version>1.4</ver…

疫情面前,医院是否需要数据中台?

来源 | 亲爱的数据&#xff08;ID&#xff1a;deardata&#xff09;作者&#xff1a;谭婧&#xff0c;虎嗅认证作者&#xff0c;《亲爱的数据》公众号出品人&#xff0c;香港浸会大学硕士&#xff0c;N年前高考作文满分得主。曾负责中国节能集团控股企业战略管理工作&#xff0…

【机器学习PAI实战】—— 玩转人工智能之综述

绪论 人工智能并非新的术语&#xff0c;这个概念由来已久&#xff0c;大约从80年代初开始&#xff0c;计算机科学家们开始设计可以学习和模仿人类行为的算法。人工智能的发展曲折向前&#xff0c;伴随着数据量的上涨、计算力的提升&#xff0c;机器学习的火热&#xff0c;以及…

java 设计模式 prototype_Java设计模式之Prototype原型模式

一、场景描述创建型模式中&#xff0c;从工厂方法模式&#xff0c;抽象工厂模式&#xff0c;到建造者模式&#xff0c;再到原型模式&#xff0c;我的理解是&#xff0c;创建对象的方式逐步从编码实现转向内存对象处理。例如&#xff0c;在“仪器数据采集器”的子类/对象“PDF文…

一文纵览EMAS 到底内含多少阿里核心技术能力

EMAS的整体定位是阿里巴巴移动技术对外输出的主窗口&#xff0c;沉淀了阿里巴巴近10年在移动互联网技术架构上的积累以及在一系列垂直场景中所实践的核心技术能力。一方面&#xff0c;EMAS希望为广大开发者提供安全、稳定、快速、弹性的移动应用基础设施&#xff0c;另一方面也…

解决Windows中PLSQL连接虚拟机中Oracle缓慢的问题

文章目录1. 原因分析2. 解决方法1. 原因分析 Linux系统中的DNS解析在寻址的时候出现“错误”。这个跟我在用桥接模式连接网络的时候&#xff0c; 错误配置了“Network Configuration”中的DNS有关&#xff08;在用Bridged模式联网时&#xff0c;可以不 用配置DNS&#xff09;。…

万字长文!Unix和Linux你不知道的那些历史(详解版)

作者 | 程序员小乐来源 | 程序员小乐&#xff08;ID:study_tech&#xff09;00 前言 UNIX 与 Linux 之间的关系是一个很有意思的话题。在目前主流的服务器端操作系统中&#xff0c;UNIX 诞生于 20 世纪 60 年代末&#xff0c;Windows 诞生于 20 世纪 80 年代中期&#xff0c;…

“阿里巴巴小程序繁星计划”:20亿扶持200万小程序开发者和100万商家

3月21日&#xff0c;在2019阿里云峰会北京站上&#xff0c;阿里巴巴旗下的阿里云、支付宝、淘宝、钉钉、高德等联合发布“阿里巴巴小程序繁星计划”&#xff1a;提供20亿元补贴&#xff0c;扶持200万小程序开发者、100万商家。凡入选“超星”的小程序&#xff0c;入驻支付宝、淘…

java ip输入框_JavaScript实现IP地址的输入框方式

1 2 3 4 JScript实现的IP地址输入框5 6 7 8 .ip_input{width:20px;height:16px;font:normal 12px 宋体;color:#000000;border:0px;text-align:center;position:relative;top:1px; }9 .all_input{width:112;height:20px;font:normal 8px 宋体;color:#000000;border:1px solid #0…