首页 > 数据库 >MySql之锁

MySql之锁

时间:2023-08-05 12:56:41浏览次数:39  
标签:之锁 加锁 行锁 互斥 意向锁 MySql 共享 表锁

MySql之锁

一、全局锁

对整个数据库加锁

应用:数据库所有表备份

二、表级锁

1.表锁

分为两类: 表共享读锁read lock 表独占写锁write lock

2.元数据锁
避免DML语句和DDL语句的冲突问题

3.意向锁:
作用:针对行锁和表锁,当表中有行锁时,会同时加一把意向锁,表锁不用去逐行遍历是否加了行锁,而是通过判断意向锁
的情况去决定能否加锁

意向共享锁 select 与表锁中的读锁兼容,与写锁互斥
意向排他锁 增删改 与表锁的读锁写锁都互,意向锁之间不会互斥

三、行级锁

1.行锁

锁住对应行数据,锁粒度最小,发生锁冲突概率最低,并发度最高

在RC(读已提交)、RR(可重复读)隔离级别下都支持

类型:

共享锁:和共享锁兼容,和排他锁互斥
排他锁:都互斥(增删改的行锁默认都是排他锁,读默认不加锁,使用 lock in share mode加共享锁和意向共享锁)

行锁是针对索引加的锁,字段没有索引会导致行锁升级为表锁

2.间隙锁
锁住索引记录间隙,防止其他事务在这个间隙进行insert,产生幻读
在RR隔离级别下支持

3.临键锁
行锁和间隙锁的组合,同时锁住数据及其前面所有的间隙Gap
在RR隔离级别下支持

标签:之锁,加锁,行锁,互斥,意向锁,MySql,共享,表锁
From: https://www.cnblogs.com/dsshl/p/17607796.html

相关文章

  • 最简单的Qt连接MYSQL的方法
    最简单的Qt连接MYSQL的方法⭐当我试图在项目中连接本地的mysql时,反复出现:QMYSQLdrivernotloaded,显示没有成功加载mysql的驱动,在网上查询了很多教程和视频,大多为互相转载且老旧,耗费了大半天还是没有构建成功,通常的解决方法是在本地构建mysql驱动(通过安装qt时勾选的src选项里......
  • MySQL之InnoDB存储结构 转载 https://juejin.cn/post/7253816086679846972
    1InnoDB存储引擎InnoDB存储引擎最早由InnobaseOy公司开发(属第三方存储引擎)。从MySQL5.5版本开始作为表的默认存储引擎。该存储引擎是第一个完整支持ACID事务的MySQL存储引擎,特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读,非常适合OLTP场景的应用使用。目前也是应用......
  • MySQL查询排序和分页
    连接数据库mysql-hlocalhost-uroot-proot排序查询语法:select字段列表from表名orderby字段1排序方式1,字段3排序方式2,字段3排序方式3,....;ASC:升序(默认值)DESC降序注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。根据年龄对公司......
  • MySQL内存使用排查
    MySQL使用内存上升90%!在运维过程中50%的几率,会碰到这样的问题。算是比较普遍的现象。MySQL内存使用率过高,有诸多原因。普遍原因是使用不当,还有MySQL本身缺陷导致的。到底是哪方面的问题,那就需要一个一个进行排查。下面介绍排查思路:1.参数配置需要确认,内存是否设置合理MySQL内......
  • mysql 命令安装
    1.  mysql 下载安装好压缩文件,下面我们进入正题,少废话。09:39:112023-08-05先到mysql官方网站下载:https://dev.mysql.com/downloads/mysql/ 解压后为这样 执行这个代码mysqld--initialize--console后面出现密码自己保存一下  然后继续安装m......
  • CentOS7 systemctl 管理MySQL服务
    #在/usr/lib/systemd/system/路径下创建mysql.service]#vim/usr/lib/systemd/system/mysql.service[Unit]Description=MySQLserverAfter=syslog.targetnetwork.target[Service]User=mysqlGroup=mysqlType=forkingTimeoutSec=0#PermissionsStartOnly=trueExecStar......
  • MySQL8.0.30在线调整redo log
    测试验证MySQL8.0.30版本带来一个与REDO日志文件有关的新特性:在线调整REDO日志文件的大小,在一定程度上简化了运维的工作量。一台MySQL实例部署完后REDO日志文件大小一般不会保持默认值,DBA会根据数据的写入量以及频率来调整其为合适的值,与业务匹配的REDO日志文件大小能让数据库......
  • mysql源代码编译安装(可自拟版本)
    mysql源代码编译安装(可自拟版本)centOS7mysql5.6.40为例准备关闭防火墙的条件下1.yum安装yuminstallncurses-devellibaio-develgccmakecmake-y2.rpm查询一下rpm-qancurses-devellibaio-devel3.创建mysql用户,用于授权目录-s/sbin/nologin不允许用户进行任......
  • MySQL查询聚合函数与分组查询
    连接数据库mysql-hlocalhost-uroot-proot聚合函数聚合函数:作用于某一列,对数据进行计算。ps:所有的null值是不参与聚合函数的运算的。06常见的聚合函数conut统计数量conut(*)统计整张表的数量max最大值min最小值avg平均值sum求......
  • 如何监控MySQL数据库的还原进度
    还原MySQL数据库的备份是一项重要任务,有时可能很耗时,尤其是对于大型数据库。监控还原过程的进度对于估计完成时间和确保一切顺利进行至关重要。 在本文中,将探讨计算MySQL还原过程进度百分比的两种不同而有效的方法。1.Linux本地输入/输出(I/O)统计信息2.管道查看工具通过这些......