易语言mysql锁表_MySQL的3种锁定机制

MySQL各存储引擎使用了3种类型的锁定机制:

1. 行级锁定(row-level) --- MyISAM、Memory、CSV

*锁定对象颗粒度最小,发生资源争用的概率最小,在并发处理能力上有较大优势。

*缺点是每次获取锁和释放锁需要做的事情很多,带来消耗大,也最容易发生死锁。

2. 表级锁定(table-level)--- Innodb、NDB Cluster

*锁定对象颗粒度最大,实现逻辑简单,获取锁和释放锁的速度很快,一次会将整个表锁定,可以很好避免死锁。

*缺点是出现资源争用的概率最高,致使并发度大打折扣。

*主要分为2种类型:读锁定和写锁定

*通过4个锁定队列来维护这2种锁定:

Current read-lock queue (lock->read) --- 存放持有读锁的所有线程,按获取到锁的时间顺序存放

Pending read-lock queue (lock->read_wait) --- 存放正在等待锁定资源的线程

Current write-lock queue (lock->write) --- 存放持有写锁的所有线程,按获取到锁的时间顺序存放

Pending write-lock queue (lock->write_wait) --- 存放正在等待锁定资源的线程

*MySQL内部实现表锁定多达11种类型,由系统中的一个枚举量(thr_lock_type)定义,各值描述如下:

IGNORE --- 当发生锁请求的时候内部交互使用,在锁定结构和队列中并不会有任何信息存储

UNLOCK --- 释放锁定请求的交互用锁类型

READ --- 普通读锁定

WRITE --- 普通写锁定

READ_WITH_SHARED_LOCKS --- 在Innodb中使用到,由如下方式产生:SELECT ... LOCK IN SHARE MODE

READ_HIGH_PRIORITY --- 高优先级读锁定

READ_NO_INSERT --- 不允许Concurrent Insert的锁定

WRITE_ALLOW_WRITE --- 当由存储引擎自行处理锁定的时候,mysqld允许其他的线程再获取读或写锁定,因为即使资源冲突,存储引擎自己也会知道怎么处理

WRITE_ALLOW_READ --- 这种锁定发生在对表做DDL(ALTER TABLE ...)的时候,MySQL可以允许其他线程获取读锁定,因为MySQL是通过重建整个表然后再RENAME而实现的该功能,所以整个过程原表仍然可以提供读服务

WRITE_CONCURRENT_INSERT --- 正在进行Concurrent Insert 时候所使用的锁定方式,该锁定进行的时候,除了READ_NO_INSERT之外的其他任何读锁定请求都不会被阻塞

WRITE_DELAYED --- 在使用INSERT DELAYED时候的锁定类型

WRITE_LOW_PRIORITY --- 显示声明的低级别锁定方式,通过设置LOW_PRIORITY_UPDAT = 1 而产生

WRITE_ONLY --- 当在操作过程中某个锁定异常中断之后系统内部需要进行CLOSE TABLE操作,在这个过程中出现的锁定类型就是WRITE_ONLY

3. 页级锁定(page-level) --- BerkeleyDB

锁定颗粒度介于行级锁定和表级锁定之间,所需资源开销以及所能提供的并发能力也介于两者之间,与行级锁定一样会发生死锁。

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

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

相关文章

c++: internal compiler error: Killed

原因:内存不足,SWAP不足 创建分区文件,大小 4G [rootdbmspreapp205 ~]# dd if/dev/zero of/data/swapfile bs1k count409600040960000 records in40960000 records out4194304000 bytes (4.2 GB) copied, 11.5204 s, 364 MB/s生成 swap 文件…

日本精密减速器,到底牛在哪?

来源:空前说精密减速机,是几乎所有机械设备中的关键装置。全球工业机器人用的精密减速器基本为日本所垄断,最近几年,虽然国内也有量产的RV减速器,但却鲜有国产机器人企业选用,目前中国市场的减速器普遍依赖…

java if 定义变量_java – 如何分配在if else语句中定义的变量

我需要创建能够在GMT中找到当前小时并将其转换为EST的内容.当我尝试编译并运行程序时,我收到此错误:currentHourEST无法解析为变量.我认为我的问题是if else语句中的某个地方,因为我将变量分配给了错误或其他东西.// Obtain total milliseconds since midnight, Jan…

解决老是提示找不到Mapper文件无法执行定义的方法问题!

尼玛,被mybatis的*Mapper.xml文件害惨了!整整两天都在围绕这个问题转圈! 先看问题长啥样吧!下面是通过逆向工程生成的Mapper.xml文件,包路径什么的都没有错! 贴出来详细的报错信息: 三月 19, 2017 10:16:45…

大脑进化追不上社会文化:化石和脱氧核糖核酸证明人类大脑进化比社会慢

来源:thenextweb人类是何时在地球上出现?这个问题似乎没有一致的答案。化石和脱氧核糖核酸表明,智人大约早在30万年前就进化了。然而考古发现,人类复杂的技术和文化,以及「行为现代性」是在5万-6.5万年前发展而来的。科…

ajax之深入解析(2)

我们前面实现了用原生的JavaScript代码实现ajax的异步数据传输。接下来,我们再使用一个流行的js框架jQuery来实现ajax。 通过 jQuery AJAX 方法,我们能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML 或 JSON,同时&#xf…

java远程下载文件_java下载远程文件到本地

/*** 下载远程文件并保存到本地* param remoteFilePath 远程文件路径* param localFilePath 本地文件路径(带文件名)*/public void downloadFile(String remoteFilePath, String localFilePath){URL urlfile null;HttpURLConnection httpUrl null;BufferedInputStream bis n…

周鸿祎:过去只能在虚拟世界里发起的网络攻击,现在都可以通过物联网直达生产一线...

来源:亚布力中国企业家论坛责编:严莉2020年9月20日,2020世界工业互联网产业大会在青岛开幕。360集团董事长兼CEO周鸿祎在会上发表题为“安全是工业互联网发展的先决条件”主题演讲。他表示,工业数字化会带来一个很大的安全问题——…

SSL-ZYC 溜冰

题目大意: 一个国际溜冰比赛的赛道长L米。在起点选手的速度是1米/秒,但速度是可以改变的,在每一米的速度可以是前一米的速度加1、减1,或者等于前一米的速度。在滑行的过程中,选手会遇到N个转弯处,第i个转弯…

java 百度地图地址解析_百度地图Java地址解析和经纬度解析

import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import com.alibaba.fastjson.JSONObject;public class BaiduMapUtils {public static String MAP_AK "秘钥AK";public static String MAP_URL…

使用Spring-hadoop小结

SpringHadoop是通过Spring框架来调用hdfs,跟直接调用hdfs的最大的不同区别是Spring通过依赖注入的方式生成操作hdfs所需要的configuration和filesystem对象,其他所有调用hdfs的api不变 1.在项目的main目录下创建resources文件夹,并将其添加到项目的资源文件中,如图 &#xfffc…

火热物联网下,中国传感器的冷思考

文章来源于传感器专家网,转载自物联传媒,图片来源于网络近20年,移动互联网的发展催生物联网产业的发展。如今智能硬件层出不穷,从智能手环到智能手表,从智能盒子到智能家居,无不是在强化硬件的远程操控力。…

java c 基本类型_java 基本数据类型

java的8种基本数据类型:类型:bye short int long float double char boolean字节数:1 2 4 8 4 8 1 ???????对应的封装类是:Byte、Short、Integer、Long、Float、Double、Character、Boolean除…

因果推断的起源

转自:通识联播如涉版权请加编辑微信联系因果推断的起源朱迪亚珀尔但它(地球)仍在动。——出自伽利略(1564—1642)弗朗西斯高尔顿爵士在皇家学院展示他的“高尔顿板”(Galton board)或称“梅花机…

docker compose java_Docker-compose部署java项目

Docker-compose部署java项目前置条件:安装docker安装docker-compose防火墙啥的都设置好dockerfile-demoFROM java:8VOLUME /tmpWORKDIR /ADD ./project-demo-1.0.0.jar project-demo.jarRUN bash -c touch /project-demo.jarEXPOSE 8080ENTRYPOINT ["java"…

​台媒:台积电2nm制程获重大突破

来源:本文来自「经济日报」,谢谢。据台媒经济日报透露,台积电2纳米制程研发获重大突破。供应链透露,有别于3纳米与5纳米采用鳍式场效电晶体(FinFET)架构,台积电2纳米改采全新的多桥通道场效电晶…

java正则匹配非html字符串_java正则表达式去除html中所有的标签和特殊HTML字符(以开头的)...

packagecom.comcons.utils;importjava.io.BufferedReader;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;importjava.util.regex.Pattern;public classReduceHtml2Text {/*** 删除Html标签*paraminputString*return*/public static…

院士论坛 | 郭毅可院士:人工智能的热望与冷思考

本文转载自微信公众号:慧天地,来源:上海人工智能学会。版权归原作者及刊载媒体所有,所刊载内容仅供交流参考使用,不代表本刊立场。郭毅可 欧洲科学院院士、英国皇家工程院院士、香港浸会大学副校长。1985年本科毕业于清…

sae 微信 java web_[1] 微信公众号与sae的web应用之间的配置

第一步:申请sae账号,并新建web应用。第三步:配置微信公众号接口:输入接口配置信息,填写URL和Token。点击提交按钮。※ 此时会发现配置不成功!需要在代码中添加:header(content-type:text);全部代…

protocol buffer相关

protocol buffer简介 protocol buffer全称Google Protocol Buffers,是google开发的一套用于数据存储,网络通信的协议编解码的工具库,与XML或者JSON相差不多,即把某种数据结构的信息,以某种格式(XML&#xf…