日常Bug排查-偶发性读数据不一致
日常Bug排查-偶发性读数据不一致前言日常Bug排查系列都是一些简单Bug的排查。笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材。Bug现场业务场景先描述这个问题出现的业务场景。这是一个支付的场景,如果支付成功了,我们就把支付状态置为success(主单据更新)同时写入支付成功
聊聊数据库连接池 Druid
在 Spring Boot 项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。 在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。
数据库系列:事务的4种隔离级别
数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版)数据库系列:高并发下的数据字段变更数据库系列:覆盖索引和规避回表数据库系列:数据库高可用及无损扩容数据库系列:使用高区分度索引列提升性能数据库系列:前缀索引和索引长度的取舍数据库系列:MySQL引擎
数据库系列:RR和RC下,快照读的区别
数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版)数据库系列:高并发下的数据字段变更数据库系列:覆盖索引和规避回表数据库系列:数据库高可用及无损扩容数据库系列:使用高区分度索引列提升性能数据库系列:前缀索引和索引长度的取舍数据库系列:MySQL引擎
数据库系列:前缀索引和索引长度的取舍
数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版)数据库系列:高并发下的数据字段变更数据库系列:覆盖索引和规避回表数据库系列:数据库高可用及无损扩容数据库系列:使用高区分度索引列提升性能1 背景有时候我们需要在字符类型的字段上建设索引,但是如果该字
数据库系列:使用高区分度索引列提升性能
数据库系列:MySQL慢查询分析和性能优化 数据库系列:MySQL索引优化总结(综合版)数据库系列:高并发下的数据字段变更1 背景我们常常在创建组合索引的时候,会纠结一个问题,组合索引包含多个索引字段,它的顺序应该怎么放,怎样能达到更大的性能利用。正确的索引字段顺序应该取决于使用该索引的查
InnoDB 全表扫描和全主键扫描一样吗?
《explain 显示 count(*) 使用了索引,实际却是全表扫描》提到了全表扫描和对主键索引进行全索引扫描,我把这两者等价对待了。对主键索引进行全索引扫描对应的就是本文标题中的全主键扫描。因为有两位读者就全表扫描、全主键扫描这两种读取数据的方式和我进行了交流,为了弄清楚两者到底是不是
my.cnf 增加一个配置项,MySQL 不能启动了
有一天,同事问了我一个来自客户的问题:在 my.cnf 中增加系统变量 foreign_key_checks 之后,MySQL 就启动不了了。我们尝试通过 SET 命令修改 foreign_key_checks,成功了。查看官方文档,明明也是有这个系统变量的:为什么把 foreign_key
别B+树了,out了
今天这篇先聊聊其内部引入 Blink Tree 来替换 B+Tree 的事情
SpringBoot+MyBatisPlus实现读写分离
前言随着业务量的不断增长,数据库的读写压力也越来越大。为了解决这个问题,我们可以采用读写分离的方案来分担数据库的读写负载。本文将介绍如何使用 Spring Boot + MyBatis Plus + MySQL 实现读写分离。读写分离原理读写分离是指将数据库的读操作和写操作分别放到不同的数据库
搭建Mysql主从复制
MySQL主从复制是一种常用的数据库高可用性解决方案,可以提高数据库的可用性和性能。本教程将介绍如何搭建MySQL主从复制。1、MySQL 支持的复制类型基于语句的复制(STATEMENT):在主服务器上执行的 SQL 语句,在从服务器上执行同样的语句。MySQL 默认采用基于语句的复制,效率
MySQL 自适应哈希索引(一)构造
曾经优化慢查询时,经常在日志中看到 truncate,当时一直疑惑 truncate 为什么会慢。转到数据库方向之后,又碰到过几次 truncate 执行时间过长,导致 MySQL 短暂卡住的问题。经过源码分析和同事测试验证,发现这几次的问题都跟自适应哈希索引有关,所以,深入研究下自适应哈希索
记一次线上问题 → Deadlock 的分析与优化
数据库的加锁是比较复杂的,不同的数据库的加锁实现也是有区别的,本篇中的死锁案例还是比较好分析的
记一次字符串末尾空白丢失的排查 → MySQL 是会玩的!
一天,小伙伴找到我,他说他碰到一个很奇怪的问题;他说:明明表名的入参是 test ,为什么展示到界面的记录包括 test 这条记录?
MySQL 幻读问题
幻读问题产生的本质原因是:如果事物中操作的都是快照读,那么是不会产生幻读问题的。
hive 行转列,列转行一些函数总结
在Hive中,collect_set函数用于将某一列中的元素收集到一个集合中,并去除重复的元素。这个函数适用于处理需要对列中的元素进行聚合并获取唯一值的情况。
xplain 显示 count(*) 使用了索引,实际却是全表扫描
这篇文章依然源于一位读者的提问:explain 显示 count(*) 使用了索引,optimizer trace 却显示为全表扫描,这是为什么?去年,我写过一篇关于 count(distinct) 实现原理的文章《count(distinct) 玩出了新花样》。还记得当时调试源码的过程中,如
美团面试官:可重复读隔离级别实现原理是什么?(一文搞懂MVCC机制)
可重复读隔离级别实现原理是什么?它和MVCC又有什么关系?什么是Read View?
为什么需要插入意向锁?
不久之前,有位读者问了一个关于 insert intention waiting 的问题,回答过程中,我还把意向锁(intention lock)和插入意向锁(insert intention lock)搞混了,实际上这是 2 种不同类型的锁。为此,我研究了下插入意向锁,于是有了这篇文章。本
MySQL 不一样的 NULL
你好,我是yes。前不久看到面试群里有同学发表了一个疑问~
答读者问:唯一索引冲突,为什么主键的 supremum 记录会加 next-key 锁?
本文缘起于一位读者的提问:插入一条记录,导致唯一索引冲突,为什么会对主键的 supremum 记录加 next-key 排他锁?我在 MySQL 8.0.32 复现了问题,并调试了加锁流程,写下来和大家分享。了解完整的加锁流程,有助于我们更深入的理解 InnoDB 的记录锁,希望大家有收获。
还傻傻搞不懂MySQL事务隔离级别么(图文并茂,保证你懂!)
并行事务可能出现的问题,具体表象就是脏写,脏读,不可重复读,幻读。MySQL通过隔离不同程度地规避这些问题,MySQL隔离级别有4种,包括:读未提交(READ UNCOMMITTED)、读提交 (READ COMMITTED)、可重复读 (REPEATABLE READ)、串行化 (SERIALIZ
mysql invalid conn排查
mysql invalid conn排查服务监控系列文章服务监控系列视频问题背景服务使用golang ,客户端库是go-mysql-driver ,系统测试环境频繁但是不总是报出invalid conn 错误,但实际拿sql执行时却是正常执行。排查思路原因分析客户端使用了无效连接由于
我又和redis超时杠上了
经过上次redis超时排查一次redis超时排查经历,并联系云服务商解决之后,redis超时的现象好了一阵子,但是最近又有超时现象报出,但与上次不同的是,这次超时的现象发生在业务高峰期,在简单看过服务器的各项指标以后~
慢查询性能优化实践
项目组接到两家客户反馈,部分生产统计报表查询缓慢,甚至某些报表无法查询出1个月的统计数据。
不要用 in + 子查询
你好,我是yes。前两天我的 VIP 用户向我抛出了一个 SQL 问题,他的 MySQL 是 8.x版本:大概意思如下 sql :select * from A where id in (  sele
慢查询日志中的 Lock_time 从哪里来?
经常关注慢查询日志的读者,和 Lock_time 应该算是老相识了,大家对这位老相识了解有多少呢?研究 Lock_time 之前,我对它的了解,仅限于它表示锁等待时间。至于它包含哪些锁等待时间、怎么计算得到的,我并不清楚。所以,我一直有个困惑:为什么有些 SQL 执行时间很长,Lock_time
记一次 MySQL 主从同步异常的排查记录,百转千回!
你好,我是悟空。本文主要内容如下:目录一、现象最近项目的测试环境遇到一个主备同步的问题:备库的同步线程停止了,无法同步主库的数据更改。备库报错如下:从库同步报错信息完整的错误信息:Relay log read failure: Could not parse
SQL运行内幕:从执行原理看调优的本质
相信大家看过无数的MySQL调优经验贴了,会告诉你各种调优手段,如:避免 select *;join字段走索引;慎用in和not in,用exists取代in;避免在where子句中对字段进行函数操作;尽量避免更新聚集索引;group by如果不需要排序,手
带你读 MySQL 源码:where 条件怎么过滤记录?
源码分析系列的第 3 篇文章,我们来聊聊 MySQL 是怎么判断一条记录是否匹配 where 条件的。本文内容基于 MySQL 8.0.32 源码。
带你读 MySQL 源码:select *
源码分析系列的第 2 篇文章,我们来聊聊 select * 中的星号是怎么展开为表中所有字段的。本文内容基于 MySQL 8.0.32 源码。
算法的艺术:MySQL order by对各种排序算法的巧用
这篇文章我们从比较宏观的角度来看MySQL中关键字的原理。本文,我们主要探索order by语句的底层原理。
带你读 MySQL 源码:limit, offset
我一直想写 MySQL 源码分析文章,希望能够达成 2 个目标:不想研究源码的朋友,可以通过文章了解 MySQL 常用功能的实现逻辑,做到知其然,也知其所以然。想研究源码的朋友,能够以文章为切入点,迈进 MySQL 源码研究之门。
MySQL多版本并发控制MVCC实现原理
承接上文MySQL事务特性ACID实现原理!MVCC(多版本并发控制)数据库中的并发大概分几种情况:读读:不需要并发控制,因为没有改变任何值。
MySQL事务特性ACID实现原理
前文回顾MQ消费端如何保证幂等性?MySQL使用B+Tree的数据结构,尽可能少的层级或IO读取量的情况下,能够缓存或存储更多数据量且达到快速查询的效果。在进行索引存储的时候,索引的数据要放到磁盘里面,不可能将磁盘里面的所有文件一口气读到内存里面,因此要使用分块读取的方式,而操作系统本身进行内
【全网首发】详解Redis三大集群模式,轻松实现高可用!
Redis集群是一种通过将多个Redis节点连接在一起以实现高可用性、数据分片和负载均衡的技术。它允许Redis在不同节点上同时提供服务,提高整体性能和可靠性。根据搭建的方式和集群的特性,Redis集群主要有三种模式:主从复制模式(Master-Slave)、哨兵模式(Sentinel)和Clust
【全网首发】深入剖析Redis持久化机制
Redis是基于内存存储的数据库,如果遇到服务重启或者崩溃,内存中的数据将会被清空。所以为了确保数据安全性和可靠性,我们需要将内存中的数据持久化到磁盘上。 持久化不仅可以防止由于系统故障、重启或者其他原因导致的数据丢失。还可以用于备份、数据恢复和迁移等操作。
长达 1.7 万字的 explain 关键字指南!
要让 SQL 又快又好的前提是,我们知道它「病」在哪里,而 explain 关键字就是 MySQL 提供给我们的一把武器!
一文带你弄懂 MySQL 的加锁规则!
MySQL 的加锁规则是怎样的,我还不是特别清楚。所以今天我们就来深入了解下 MySQL 的加锁规则。
从节点崩了,还怎么「主从读写分离」?
本篇通过一次 MySQL 从节点崩了的事件,引出了如何对从节点做高可用,然后从实践的角度详细讲解了如何去配置 keepalived 来保证从节点的高可用。
深入理解事务
事务将应用程序的多个读、写操作捆绑在一起成为一个逻辑执行单元。即事务中的所有读写是一个执行的整体,整 个事务要么成功(提交)、要么失败(中止 或者 回滚)。如果失败,应用程序可以安全地重试。
【全网首发】MySQL全面瓦解30:备份与恢复
1 为什么需要数据库备份灾难恢复:当发生数据灾难的时候,需要对损坏的数据进行恢复和还原需求的变更或者回滚:当需求发生变更,或者需要回滚到之前的版本时,数据库备份也显得很重要。审计:需要知道某一个阶段的数据或者Schema的实际情况测试:将实际的生产环境的数据导入到本地备份为测试数据,来验证
数据库设计的步骤
数据库设计是指:根据用户的需求,在数据库管理系统上(比如:MySQL、Oracle),设计数据库的结构和建立数据库的过程。 数据库设计的设计内容包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。
SQL优化13连问,收藏好!
大家好,我是田螺。金三银四已经开始啦,准备了SQL优化的13连问,内容非常干!相信大家看完一定会有帮助的。1.日常工作中,你是怎么优化SQL的?大家可以从这几个维度回答这个问题:分析慢查询日志使用explain查看执行计划索引优化深分页优化避免全表扫描
性能优化 · MySQL常见SQL错误用法
今天给大家分享几个SQL常见的“坏毛病”及优化技巧
问了几人,MySQL changebuffer 这点都没答对
之前我写过一篇关于 mysql innodb 所有 buffer 的内容 :总结 mysql 的所有 buffer,一网打尽就这篇了!
一起聊一聊hive的索引优化
大家好,我是球球,今天给大家聊聊hive的索引。
【全网首发】数据库系列:覆盖索引和避免回表
1 介绍在MySQL数据库查询过程中,索引覆盖和避免不必要的回表,是减少检索步骤,提高执行效率的有效手段。下面从这两个角度分析如何进行MySQL检索提效。2 数据准备模拟一个500w数据容量的部门表 emp,表结构如下,并通过工具模拟500w的数据:CREATE TABLE `emp` (
系统上线前,SQL脚本的9大坑
系统上线时,非常容易出问题。即使之前在测试环境,已经执行过SQL脚本了。但是有时候,在系统上线时,在生产环境执行相同的SQL脚本,还是有可能出现一些问题。
一次偶然机会发现的MySQL“负优化”
数年前遇到的一个关于MySQL查询性能的问题。主要是最近刷到了一些关于MySQL查询性能的文章,大部分文章中讲到的都只是一些常见的索引失效场合,于是我回想起了当初被那个离奇的“索引失效”支配的恐惧。
数据库锁的12连问,抗住!
如果有多个并发请求存取数据,在数据就可能会产生多个事务同时操作同一行数据。如果并发操作不加控制,不加锁的话,就可能写入了不正确的数据,或者导致读取了不正确的数据,破坏了数据的一致性。因此需要考虑加锁。
修改 lower_case_table_names 导致 frm 文件删除失败
最近碰到一个线上问题,mysqldump 导出数据报错
MySQL 不相关子查询怎么执行?
对于 where 条件包含子查询的 SQL,我们可以做一点优化,就是把这类 where 条件放在最后,让 MySQL 能够少做一点无用功,提升 SQL 执行效率。
百万数据excel导出功能如何实现?
我们要如何才能解决这些问题,实现一个百万级别的excel数据快速导出功能呢?
MySQL索引15连问,抗住!
前言大家好,我是田螺。金三银四很快就要来啦,准备了索
万字详解,吃透 MongoDB!
本文已经收录进 JavaGuide(「Java学习+面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识。)少部分内容参考了 MongoDB 官方文档的描述,在此说明一下。MongoDB 基础MongoDB 是什么?MongoDB 是一个基于 分布式文件存储 的开源 NoSQL
select for update行锁or表锁,20个场景分析,还真得看情况
看到许多写select for update是行锁还是表锁的文章,但每篇文章的结论好像都不太一样。同时,是行锁还是表锁的问题直接影响着系统的性能,所以特意为大家调研一番~
MySQL 主从模式采用 GTID 的实践
你好,我是悟空。本文主要内容如下:一、背景为了保证高可用,之前在测试环境部署了一套 MySQL 双主模式,当一个主库服务出现异常,可以将流量切到另外一个主库,两个主库之间相互同步数据。双主模式双主模式的原理图如下:但是经常出现数据冲突的问题,于是我们又把双主模式改为了主从读写分离模式
一个慢SQL引发的雪崩
每一次犯错都是成长的机会服务出问题了?这个SQL能把MySQL打满?错哪了?雪崩时,没有一片雪花是无辜的。复盘。Anything that can go wrong will go wrong.改进。升级架构,不能把鸡蛋放在一个篮子里小结。稳定性无小事服务
解决缓存和数据库双写数据一致性问题
缓存的作用在公司刚起步,业务量比较小的时候。对于系统的读写请求,我们一般的做法都是直接操作数据库。但是随着业务体量的不断增长,用户请求增多,这时候只用数据库处理业务是不够的,存在着「性能问题」。业内通用做法就是引入「缓存」。缓存可以提升性能,缓解数据库压力,但是使用缓存也会出现「缓存和数据库
当 xxl-job 遇上 docker → 它晕了,我也乱了!(二)
前情回顾  在 当 xxl-job 遇上 docker → 它晕了,我也乱了!,有两个场景没给大家演示,先补上  executor 和 admin 在同一台宿主机上通过 docker 部署  这里有必要给大家简单讲一下 Docker 的 bridge&
MySQL中这14个小玩意,让人眼前一亮!
大家好,我是苏三,又跟大家见面了。前言我最近几年用M
分库分表经典15连问
前言大家好,我是田螺。我们去面试的时候,几乎都会被问到分库分表。田螺哥整理了分库分表的15道经典面试题,大家看完肯定会有帮助的。1.我们为什么需要分库分表在分库分表之前,就需要考虑为什么需要拆分。我们做一件事,肯定是有充分理由的。所以得想好分库分表的理由是什么。我们现在就从两个维度去思考它
SQL优化思路+经典案例分析
前言大家好,捡田螺的小男孩。SQL调优这块呢,大厂面试必问的。最近金九银十嘛,所以整理了SQL的调优思路,并且附几个经典案例分析。1.慢SQL优化思路。 慢查询日志记录慢SQLexplain分析SQL的执行计划profile 分析执行耗时Optimizer Trac
如何保证mongodb和数据库双写数据一致性?
大家好,我是苏三,又跟大家见面了。前言最近在我的技术群里,有位小伙伴问了大家一个问题:如何保证Mongodb和数据库双写的数据一致性?群友们针对这个技术点讨论的内容,引起了我的兴趣。其实我在实际工作中的有些业务场景,也在使用Mongodb,也遇到过双写的数据一致性问题。今天跟大家一起分享一
如何保证数据库和缓存双写一致性?
大家好,我是苏三,又跟大家见面了。前言数据库和缓存(比如:redis)双写数据一致性问题,是一个跟开发语言无关的公共问题。尤其在高并发的场景下,这个问题变得更加严重。我很负责的告诉大家,该问题无论在面试,还是工作中遇到的概率非常大,所以非常有必要跟大家一起探讨一下。今天这篇文章我会从浅入深
后端思维之数据库性能优化方案
1、前言毫不夸张的说咱们后端工程师,无论在哪家公司,呆在哪个团队,做哪个系统,遇到的第一个让人头疼的问题绝对是数据库性能问题。如果我们有一套成熟的方法论,能让大家快速、准确的去选择出合适的优化方案,我相信能够快速准备解决咱么日常遇到的80%甚至90%的性能问题。从解决问题的角度出发,我们得先
SQL性能分析
监控有个全局监控的概念,通过全局监控能够知道目前集群或服务器的好坏情况,有了全局监控,再去考虑定点监控,对造成性能下降的具体原因进行分析,有可能是慢查询,也有可能是磁盘问题。全局监控分为两大类:指标信息和日志信息,指标信息指标信息是指普通服务器上面所监控到的一些硬件指标:cpu、内存、磁盘的i
默认数据库主键、外键和唯一键索引策略是什么?
在本文中,我们将了解在使用 Oracle、SQL Server、PostgreSQL 和 MySQL 时默认的数据库主索引、外键索引和唯一键索引策略是什么。因此,如果你想知道在添加主键、外键或唯一键约束时这些顶级关系数据库中的一个是否会创建默认索引,那么本文将为你提供你一直在等待的答案.
【译】SQL递归与CTE查询的原理和应用
介绍在本文中,我们将了解 SQL Recursive WITH CTE(公用表表达式)查询的工作原理,以及我们如何应用它们来处理分层数据模型。
当 xxl-job 遇上 docker → 它晕了,我也乱了!
开心一刻  公交车上,一位老大爷睡着了,身体依靠在背后的一位年轻小伙子身上  小伙子一直保持站姿十几分钟,直到老人下车  这位在校大学生,接受采访时说:”当时就觉得背后这个人很轻盈,以为是个姑娘!“前提准备  对 xxl-job、docker 要有基本的了解  
原来count(*)是接口性能差的真凶
大家好,我是苏三,又跟大家见面了。前言最近我在公司优化过几个慢查询接口的性能,总结了一些心得体会拿出来跟大家一起分享一下,希望对你会有所帮助。我们使用的数据库是Mysql8,使用的存储引擎是Innodb。这次优化除了优化索引之外,更多的是在优化count(*)。通常情况下,分页接口一般会查询
【译】MySQL rewriteBatchedStatements 的属性设置
介绍在本文中,我们将了解 MySQL rewriteBatchedStatements 在使用 JDBC、JPA 或 Hibernate 时是如何工作的。
count(*)查询性能很差?用这5招轻松优化
大家好,我是苏三,又跟大家见面了。前言最近我在公司优化过几个慢查询接口的性能,总结了一些心得体会拿出来跟大家一起分享一下,希望对你会有所帮助。我们使用的数据库是Mysql8,使用的存储引擎是Innodb。这次优化除了优化索引之外,更多的是在优化count(*)。通常情况下,分页接口一般会查询
【全网首发】日常Bug排查-读从库没有原子性?
前言日常Bug排查系列都是一些简单Bug排查。问题虽小,但经常遇到,了解这些问题,会让我们少走点弯路,提升效率。说不定有些问题你遇到过哦:)Bug现场业务开发同学突然问了笔者一个问题,从库读会不会没有原子性?我下意识的反应怎么可能,只要是遵守MySQL主从Replication协议的原子性至少
where field in(...) 是怎么执行的?
我们日常写 SQL 时,子查询应该算是常客了。MySQL 为子查询执行准备了各种优化策略,接下来我会写子查询各种优化策略是怎么执行的系列文章。本文以包含最简单的 in 条件的查询入手,介绍 where field in (8,18,88,…) 这种值都是常量的 in 条件是怎么执行的。这虽然不是
【译】如何使用MySQL来设计分布式锁?
为什么我们需要分布式锁?我们中的许多人可能遇到或听说过这些问题:重试导致的数据损坏:从应用程序UI提交数据,该应用程序用户界面在引擎盖下将数据插入后端MySQL数据库。偶尔用户界面没有响应,因此用户单击了几次提交按钮,这损坏了数据库中的数据。缓存过期:使用Redis作为读透缓存,缓存中的密钥
【译】作为程序员应该知道的最基本SQL优化建议
当我们谈论系统性能优化时,除了代码级别的各种有针对性的优化外,还有一个非常重要的手段来优化数据库的性能。在互联网系统中,当系统访问越来越多,数据量越来越多时,数据库的压力将越来越大。如果数据库表结构设计不正确,SQL语句写得不好,代码性能可能极高,但系统会被数据库拖下来。因此,我们程序员有必要了
Mysql修改、添加、删除字段
1.添加字段1.在末尾添加字段(1)语法ALTER TABLE <表名> ADD <字段名> <数据类型> [约束条件];语法格式的说明:<表名> 为数据表的名字;<字段名> 为所要添加的字段的名字;<数据类型&g
如何写出高性能 SQL 语句?
1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认
弱隔离级别 & 事务并发问题
本篇文章主要介绍了 1. 各种隔离级别 2. 事务并发执行时,存在的并发问题 3. 如何防止并发问题
多版本并发控制 MVCC
本篇文章主要介绍了 多版本并发控制(MVCC)在 MySQL 的实现
MySQL 连接怎么保活?
多年前开发过一个异步发送订单短信、邮件通知的守护程序,每次程序启动时会创建数据库连接,后续读写数据库操作就一直复用这个连接。某一天,用户反馈下单后收不到通知了,我们登录服务器看到程序还在运行。经过排查确认,发生问题的这天,距离上一次有用户下单超过了 8 小时,MySQL 服务端已经自动断开连接了
MySQL 啥时候用记录锁,啥时候用间隙锁?
大家好,我是树哥。在前面的文章「MySQL 不同隔离级别,都使用了什么锁?」里,我们得出结论:在「读未提交」和「读已提交」隔离级别下,都只会使用记录锁,不会用间隙锁和 Next-Key 锁。而对于「可重复读」隔离级别来说,会使用记录锁、间隙锁和 Next-Key 锁。那么 MySQL 啥时候会用

有开始,就会有进​步!

在追求性能的道路上,记录每一刻的成长!源码解读,编程技巧,外文翻译,技术实践,线上案例等等,记录自己,启发他人!

专家作者推荐

巡山小汪

关注微信公众号《解Bug之路》,有问题请在公众号中咨询:) 无论多么艰苦的时刻,都不要忘记,辉煌的未来,在你的眼中闪耀!

飞哥开发内功

《深入理解Linux网络》作者,腾讯搜狗十年工程师,公众号「开发内功修炼」作者!

踩刀诗人

聊聊技术,唠唠段子,偶尔做菜写诗,欢迎关注我的公众号 踩刀诗人

Brand

搜索关注微信公众号【架构与思维】:撰稿者为bat、字节的几位高阶研发/架构,专注技术分享。

专题推荐

分布式系统绕不开的核心之一的就是数据缓存,有了缓存的支撑,系统的整体吞吐量会有很大的提升。通过使用缓存,我们把频繁查询的数据由磁盘调度到缓存中,保证数据的高效率读写。
21篇文章38544阅读量
Netty 是一个异步事件驱动的网络通信层框架,用于快速开发高可用高性能的服务端网络框架与客户端程序,它极大地简化了 TCP 和 UDP 套接字服务器等网络编程。
作者:闪电侠,《跟闪电侠学 Netty》已出版了。书的前半部分是掘金小册中的内容:通过一个完整的 IM 项目入门 Netty;后半部分用了较大的篇幅来介绍 Netty 的底层原理,也会穿插讲一些源码阅读的思路,希望能够帮助到你。
13篇文章21865阅读量