MySQL之锁的使用

2023-10-31

MySQL表级锁的锁模式:

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

锁模式的兼容性:

对MyISAM表的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求;对 MyISAM表的写操作,则会阻塞其他用户对同一表的读和写操作;MyISAM表的读操作与写操作之间,以及写操作之间是串行的!


写锁定:

当一个线程获得对一个表的写锁后,只有持有锁的线程可以对表进行插入、更新和查询操作。其他线程的读、写操作都会等待,直到锁被释放为止。

mysql>lock table test write;

读锁定:

当一个线程获得对一个表的读锁后,可以查询锁定表中的记录,但更新或访问其他表都会提示错误;同时,另外一个线程可以查询表中的记录,但更新和插入就会出现锁等待。

mysql>lock table test read;

在一定条件下,MyISAM表也支持查询和插入操作的并发进行。
MyISAM存储引擎有一个系统变量concurrent_insert:
当concurrent_insert设置为0时,不允许并发插入。
当concurrent_insert设置为1时,如果MyISAM表中没有空洞(即表的中间没有被删除的行),MyISAM允许在一个进程读表的同时,另一个进程从表尾插入记录。这也是MySQL的默认设置。
当concurrent_insert设置为2时,无论MyISAM表中有没有空洞,都允许在表尾并发插入记录。

获得读锁定的时候增加local选项:

该线程可以对表进行查询操作,但不能对表进行插入和更新操作;其他的线程,虽然不能对表进行删除和更新操作,但却可以对该表进行并发插入操作,表尾插入记录。

mysql> lock table test read local;


PS:

MyISAM和InnoDB 区别:其实我们平时建的就是MyISAM格式的。

http://www.php100.com/html/webkaifa/database/Mysql/2011/0326/7789.html

http://www.oschina.net/question/17_4248

http://www.cnblogs.com/vicenteforever/articles/1613119.html


参考资料:

http://blog.chinaunix.net/uid-21505614-id-289450.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL之锁的使用 的相关文章

  • 多个数据库连接

    我有三张桌子 categories content info and content The categories表包含类别的id及其 IDparent类别 The content info包含两列 entry id帖子的 ID 和cat
  • ORDER BY id 或 date_created 显示最新结果?

    我有一个表 实际上有几个 我想首先从中获取最新条目的结果 这是我的ORDER BY条款选项 date created INT 从不改变值 id 当然是INT AUTO INCRMENT 两列应同等地代表记录插入的顺序 我自然会使用date
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • 使用DBFlow,如何加密已经存在的数据库?

    我正在使用 DBFlow 来处理项目中的数据库 并且我想对现有数据库进行加密 我知道我可能必须删除现有的未加密数据库并创建另一个加密数据库 我也知道我可以将 SQLCipher 与 DBFlow 一起使用 如上所述文档 https gith
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • 如何记录数据库代码以查看数据库对象之间的依赖关系? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想为我的宠物项目编写文档 我的 PostgreSQL 数据库中有 30 个表 近 50 个视图和大约 30 个函数 存储过程 我想看
  • 我应该定义索引(A)和索引(B),还是索引(A,B),或者两者都定义?

    在我的表中 我有两个密切相关的列 A 和 B 我应该考虑哪些因素来决定是否创建 索引 A 和索引 B 索引 A B 以上两者 如果我 仅使用类似的查询where A 5 and B 10 并且从不喜欢where A 5 也可以使用类似的查询
  • 为 java 项目创建安装

    我创建了一个 java 项目 它使用数据库来检索 编辑和保存数据 我使用 Netbeans 完成了该项目 现在我想在该项目之外创建一个安装 为此 我想包含与项目一起安装的数据库 我用来连接数据库的代码是 Class forName com
  • SQL Server 大小写/排序规则问题

    今天我在客户数据库中遇到了一个奇怪的情况 SQL Server 2005 数据库排序规则不区分大小写 因此我可以使用任何大小写编写 SQL 查询 没有任何问题 除了一个 一张特定表中的一个特定列称为 DeadZone 如果我这样查询 从表名
  • 如何将彼此“接近”的纬度/经度点分组?

    我有一个用户提交的纬度 经度点的数据库 并且正在尝试将 接近 点分组在一起 接近 是相对的 但目前看来约为 500 英尺 起初 我似乎只能按前 3 个小数位具有相同纬度 经度的行进行分组 大约是一个 300x300 的盒子 了解当您远离赤道
  • 将数据从电子表格迁移到 RDBMS 的策略是什么?

    这与我的另一个问题相关何时从电子表格迁移到 RDBMS https stackoverflow com questions 2395607 when to switch from spreadsheet to rdbms 决定从 Excel
  • 如何使用 C# 查询远程 MS ACCESS .mdb 数据库

    我正在尝试使用 C 查询 mote MS ACCESS 数据库 mdb 文件 将文件复制到本地计算机时可以成功查询它 我只想远程放置文件 所以我的客户端程序不包含原始数据 static string m path http www xyz
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con
  • 插入具有多个值的外键

    我想知道 是否有可能创建一个表 其中我有一个接受外键但同一行可能有多个值的表 例如 Employee id name skillid Skill Skillid skillname 这里 Employee 的一个例子可以是 Employee
  • 可以重复应用并产生相同结果的数据库操作吗?

    我现在一片空白 或者像有些人说的那样 正在经历一个高级时刻 我知道这个概念有一个正式的定义和名称 其中在数据库中运行的数据库操作 存储过程 如果重复运行将产生相同的结果 它属于数学家的自反 对称 传递等类型 您的意思是 确定性 吗 如果使用
  • PostgreSQL - 致命:用户“myuser”身份验证失败[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我刚刚在我的 Ubuntu Box 中安装了 PostGreSQL 我想做的第一件事就是创建一个数据库 我读了文档 http www postgres
  • dbms_xmlgen.getxml - 如何设置日期格式

    我们使用 dbms xmlgen getxml 实用程序通过 SQL 查询生成 xml 该查询从几乎 10 15 个相关表中获取数据 默认情况下 日期格式生成于dd MMM yy格式 有什么方法可以在 dbms xmlgen getxml
  • 在laravel中组合两个不同的无关系数据库表查询进行分页

    我的数据库中有两个不相关的表 我需要将它们合并 以便我可以将其放在我的搜索视图中 但我不知道是否可能 这是我的代码 这news and season表不相关 但它们具有相似的列 我试图将其放入一个对象中以便于分页 是否可以 search r
  • 如何使用Java获取特定模式的所有表及其列?

    我有一个数据库架构 其名称为 Navid 这个模式中有很多表 当然每个表都有一些列 我需要的是一个java类 连接到我的数据库 有一个在所有表上循环的方法 2 1 有一个内部循环来定义表的所有列 制作创建表查询语句 我想在另一个数据库中创建

随机推荐

  • RV1109 LVGL UI开发

    RV1109 LVGL UI开发 前面在使用RK的RV1109平台用于产品中 使用的是QT做的UI 主要是继承原来海思平台的产品 随着分辨率的提高 UI响应也慢了不少 试着在RV1109上使用LVGL看看效果如何 RV1109使用的是DRM
  • vant UI 轮播组件swiper 滑动时触发click点击事件

    问题描述 如图 我是用轮播图做了一个答题卡分页 但是 出现了 滑动轮播图时自动触发了数字点击的事件 解决办法 1 在van swipe标签添加 lazy render属性 实现图片懒加载 懒加载模式下 只会渲染当前页和下一页 2 在van
  • 计算机专有名词解释

    一 NMAP 二 DAS 三 NAS 四 SAN 五 FC 1 FC AE协议集 2 FC AV ARINC818 3 光纤总线特点 六 MEMERY 七 LVM 八 SCSI 特点 九 SMB 十 stordge 十一 NFS 十二 bl
  • source insight 无法查找与跳转和恢复默认设置

    1 无法搜索到工程里的文件 可能原因 下级目录没有添加 解决方法 Recursively add lower sub directories 勾选上 2 context window 不能跳转 可能原因 没有同步代码 解决方法 同步工程代码
  • Jira入门教程 敏捷开发管理(一)

    https www jianshu com p 145b5c33f7d0 简介 Jira是Atlassian公司出品的一款事务管理软件 无论是 需求 还是 BUG 或是 任务 都是 事务 的一种 所以Jira可以胜任非常多的角色 需求管理
  • https 状态码

    HTTP状态码 类别 原因短语 1 Information 信息性状态码 接受的请求正在处理 2 Success 成功状态码 请求正常处理完毕 3 Redirection 重定向状态码 需要进行附加操作已完成请求 4 Client Erro
  • 基于CentOS7.9安装部署docker(简洁版)

    安装部署 1基于官方脚本安装 不推荐 不能自行选择版本 官方文档 https docs docker com engine install centos 2 使用yum安装 阿里云文档 docker ce镜像 docker ce下载地址 d
  • The 19th Zhejiang Provincial Collegiate Programming Contest(部分题解)

    在完成三道签到之后 分别对图论 前缀 二分 大模拟上面取得突破点 但其他题集没能得到突破 仍需多加练习 A JB热爱数学 题意 给定两个数 a b 求出让a变成b的最少次数 能修改a的值为加上一个奇数 和 减去一个偶数 类型 思维题 分析各
  • vscode ssh远程输入密码之后无反应,一直提示输入密码

    用vscode进行远程服务器连接时 一直要输入密码 不断重复 始终无法链接 参考 https blog csdn net qq 33854260 article details 111255004 方法 点击view下的 command p
  • js网页模拟野火燃烧蔓延效果

    野火通过燃床蔓延是自然界的一个复杂现象 本文综述了为认识这一现象所作的研究工作 包括分析各种理化机制及通过基本物理规律构造数学模型 现有的数学模型可分为统计模型 经验模型和物理模型三类 本文着重以统一的观点评述了近五十年来所建立的各种物理模
  • 上传文件时候的accept限制文件类型.jpg、.gif、jpeg、.png、.doc、.docx、.txt、.xls、.xlsx等

    常用的 jpg image jpeg gif image gif jpeg image jpeg png image png doc application msword docx application vnd openxmlformat
  • node nginx mysql在linux的安装

    系统环境使用的阿里云ECS的CentOS 8 5 64位 nginx的安装 打开Terminal 输入以下命令安装Nginx yum install nginx 输入以下命令启动Nginx nginx 安装完成后 输入以下命令将Nginx加
  • 微信的OAuth2.0的接口配置信息修改部署Nginx

    1 新建springboot项目 package com cn wx import java io PrintWriter import java util Enumeration import javax servlet http Htt
  • 算法第三期——二分法(Python)

    目录 1 二分法 1 1 引导 猜数游戏 1 1 1 猜数游戏代码 1 2 二分法的使用条件 1 3 二分法的复杂度 2 整数二分 2 1 在单调递增序列中查找x或者x的后继 求中间值的方法 代码演示 记忆 2 2 在单调递增序列中查找x或
  • Ubuntu18.04必要安装的软件

    1 更新源 找到Software Updates 将源更新为阿里云的源 在Other Software里将Canonical Partners勾上 然后自己手动更新一下 sudo apt update sudo apt upgrade 2
  • STLINK,ST-LINK Utility无法连接单片机

    STLINK ST LINK Utility无法连接单片机 keil ST LINK Utility尝试连接最小系统板 但是无法连接 网上搜了很多教程 偶然看到一位道友说他连接空板子可以 有程序的不行 不知道为什么 因为我的板子之前也下载过
  • 中断INT 0x80的作用[转自csdn blog]

    当进程执行系统调用时 先调用系统调用库中定义某个函数 该函数通常被展开成前面提到的 syscallN的形式通过INT 0x80来陷入核心 其参数也将被通过寄存器传往核心 在这一部分 我们将介绍INT 0x80的处理函数system call
  • Python 计算机视觉

    Python 计算机视觉 from PIL import Image Image是PIL中比较重要的一个 模块 im Image open F Desktop 今日须看 代码 Python master back image bmp ims
  • python画散点图、折线图

    Python 画图 散点图scatter 保存savefig 及颜色大全 python中的散点图还可以这么画 这个针对改变描点形状 一 散点图 import numpy as np import matplotlib pyplot as p
  • MySQL之锁的使用

    MySQL表级锁的锁模式 MySQL的表级锁有两种模式 表共享读锁 Table Read Lock 和表独占写锁 Table Write Lock 锁模式的兼容性 对MyISAM表的读操作 不会阻塞其他用户对同一表的读请求 但会阻塞对同一表