前言转眼又一年~~2023马上就要到尾声了,在最后的几天中,我想给大家分享一下 MySQL 的一些小知识。一、事务1.1 含义通俗理解:在我的理解下,事务可以使 一组操作,要么全部成功,要么全部失败。事务其目的是为了下保证数据最终的一致性。举个例子:举个例子,我给你发支付宝转了666块红包。那自然我的支付宝余额会扣减666块,你的支付宝余额会增加666块。1 ......
133
0
0
2024-04-19
本文字数:3107字,阅读大约需要 10 分钟。MySQL中的间隙是指索引中两个索引键之间的空间,间隙锁用于防止范围查询期间的幻读,确保查询结果的一致性和并发安全性。概念解释记录锁(Record Lock)记录锁也被称为行锁,顾名思义,它是针对数据库中的行记录进行的锁定。比如:SELECT * FROM `user` WHERE `id`=1 FOR UPD ......
179
0
0
2024-04-09
有小伙伴在微信上表示面试时被问到了 Next-Key Lock 是啥,结果一脸懵逼,那么今天我们来捋一捋 MySQL 中的记录锁、间隙锁以及 Next-Key Lock。 1. Record Lock Record Lock 也就是我们所说的记录锁,记录锁是对索引记录的锁,注意,它是针对 索引 记录 ,即它只锁定记录这一行数据。 ......
89
0
0
2024-03-04
MySQL隔离级别测试隔离级别数据库准备数据库如下图所示,所有字段都是int(方便测试),id为主键索引,name为普通索引(唯一索引),age没有索引Read Uncommitted(读取未提交内容)打开两个mysql终端,都设置session级别的隔离级别为读取未提交内容(本次会话有效)set session transaction isolation ......
95
0
0
2024-02-27
1说在前面本文分析了 INSERT 及其变种(REPLACE/INSERT ON DUPLICATE KEY UPDATE)的几个场景的死锁及如何避免:场景一:INSERT 唯一键冲突[1]场景二/三:REPLACE INTO 唯一键冲突(来自线上业务)场景四:INSERT 主键冲突(来自官方案例)其实 Google 一番,也会有大量这样的文章。本文只是就几 ......
98
0
0
2024-01-29
| 导语记录一次于2023年01月23日遇到的死锁问题。1、基础1.1 数据库隔离级别1.1.1RCREAD COMMITTED:只能读取已经提交的数据;此时:允许幻读和不可重复读,但不允许脏读,所以RC隔离级别要求解决脏读;1.1.2RRREPEATABLE READ:同一个事务中多次执行同一个select,读取到的数据没有发生改变;此时:允许幻读,但不允 ......
98
0
0
2024-01-23
一、简介锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(CPU、RAM、i/O)的挣用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素,从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。二、分类MySQL中的锁、 ......
107
0
0
2024-01-17
MySQL 作为目前互联网企业使用最多的,或者说在基于成本下,最流行的数据库之一,MySQL 在国内使用者众多,那么在MySQL偶然安装后,在使用中出现死锁后,死锁中的事务到底能不能回滚 ?我们来进行相关的实验我们先验证一遍1 我们打开一个MySQL 版本为 8.027 官方版本2 通过下面的操作我们可以确认两个分屏访问的是同一个MySQL的数据库3 我们在 ......
95
0
0
2024-01-14
MySQL锁机制起步锁是计算机用以协调多个进程间并发访问同一共享资源的一种机制。 mysql 中为了保证数据访问的一致性与有效性等功能,实现了锁机制,MySQL中的锁是在服务器层或者存储引擎层实现的。 行锁与表锁首先我们来了解行锁与表锁的基本概念,从名字中我们就可以了解:表锁就是对整张表进行加锁,而行锁则是锁定某行、某几行数据或者行之间的间隙。 各引擎对锁的 ......
108
0
0
2023-11-25
mysql – 死锁 的产生及解决方案1. 死锁与产生死锁的四个必要条件1.1 什么是死锁 死锁 是指 2+ 的 进程 在 执行过程 中,由于竞争资源或者由于彼此通信而造成的一种 阻塞 的现象,若无外力作用,它们都将 无法推进 下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死 ......
215
0
0
2023-10-12
来自: 贝壳DBA 咱们使用 MySQL 大概率上都会遇到死锁问题,这实在是个令人非常头痛的问题。本文将会对死锁进行相应介绍,对常见的死锁案例进行相关分析与探讨,以及如何去尽可能避免死锁给出一些建议。 –什么是死锁 — 死锁是并发系统中常见的问题,同样也会出现在数据库MySQL的并发读写请求场景中。当两个及以上的事务,双方都在等待对方释放已经持有的锁或 ......
241
0
0
2023-09-15
目录mysql 间隙锁加锁11个规则next-key lock的加锁规则案例分析案例一:唯一索引等值查询间隙锁案例二:非唯一索引等值查询锁案例三:主键索引范围查询锁案例四:非唯一索引范围查询锁案例五:唯一索引范围查询锁 bug案例六:非唯一索引上存在 " " 等值 " " 的例子案例七: limit 语句加锁案例八:一个死锁的例子案例九:order by索引 ......
184
0
0
2023-09-08
只要学计算机,「 锁 」永远是一个绕不过的话题。 mysql 锁也是一样。一句话解释MySQL锁: MySQL锁是 解决资源竞争 的一种方案。 短短一句话却包含了3点值得我们注意的事情: 对什么资源进行竞争? 竞争的方式(或者说情形)有哪些? 锁是如何解决竞争的? 这篇文章开始带你循序渐进地理解这几个问题。 1. 资源的竞争方式MySQL对资源的操 ......
176
0
0
2023-06-26
目录锁共享锁排他锁意向锁记录锁间隙锁临键锁死锁死锁产生条件行锁发生死锁表锁发生死锁锁的释放事务阻塞死锁的避免锁的日志行锁的原理不带任何索引的表带主键索引的表带唯一索引的表结论1.表必定有索引2.唯一索引数据行加锁,主键索引同样被锁锁锁是用来解决事务对数据的并发访问的问题的。MyISAM支持表锁,InnoDB同时支持表锁和行锁。表加锁语法:lock table ......
168
0
0
2023-06-24
本文转自高效运维这么热天能来的都是真爱,我给大家讲一下这个课题,主要讲源码,这个课题与 运维 看起来有点小差别。你能看源码,至少你在运维时候可以跟开发说是看源码怎么怎么样,我们就可以更有底气。而且有点很重要,我们看数据库里面,现在大家很多用的,不管开源的 MySQL ,还是闭源的像 oracle 都是国外数据库,我们数据库底子还是挺薄,越来越人开始研究源码和 ......
179
0
0
2023-06-16