MySQL 死锁套路:走不同的索引更新
前几篇文章介绍了用源码的方式来调试锁相关的信息,这里同样用这个工具来解决一个线上实际的死锁案例,也是我们介绍的第一个两条 SQL 就造成死锁的情况。因为线上的表结构比较复杂,做了一些简化以后如下 CREATE TABLE `t3` ( `i...
前几篇文章介绍了用源码的方式来调试锁相关的信息,这里同样用这个工具来解决一个线上实际的死锁案例,也是我们介绍的第一个两条 SQL 就造成死锁的情况。因为线上的表结构比较复杂,做了一些简化以后如下 CREATE TABLE `t3` ( `i...
上一篇文章介绍了使用调试 MySQL 源码的方式来查看死锁的过程,这篇文章来讲讲一个常见的案例。 毫不夸张的说,有一半以上的死锁问题由唯一索引贡献,后面介绍的很多死锁的问题都跟唯一索引有关。这次我们讲一段唯一索引 S 锁与 X 锁的爱恨情仇...
获取 IDEA 激活码、PyCharm 激活码、WebStorm 激活码和 DataGrip 激活码,提供详细破解教程与永久激活方法。支持 IDEA 永久激活与破解,免费获取注册码与激活码,解决 2024/2025 版本激活问题,轻松实现所有 JetBrains 工具的激活。
为什么写这这篇文章 一直有读者问我 javac 源码怎么调试,自己也在写 JVM 掘金小册的过程中阅读了大量的 javac 的源码,网上这方面的文章也比较少,那就来写一篇 javac 源码调试的文章吧,作为 javac 系列文章的开篇。 j...
前段时间线上的一个使用 Google Puppeteer 生成图片的服务炸了,每个 docker 容器内都有几千个孤儿僵死进程没有回收,如下图所示。 这篇文章比较长,主要就讲了下面这几个问题。 什么情况下会出现僵尸进程、孤儿进程 Puppe...
在 JDK5 中,开发者只能 JVM 启动时指定一个 javaagent 在 premain 中操作字节码,Instrumentation 也仅限于 main 函数执行前,这样的方式存在一定的局限性。从 JDK6 开始引入了动态 Attac...
在 JVM 中,字节码可以帮我们搞清楚很多编译执行的细节, 为了搞清楚 go 语言底层的语法糖和原理,需要对底层的汇编知识有深入的了解。汇编其实没有想象中那么复杂,其实原理上来说跟 Java 字节码差不多,只是资料很少,因为更接近系统底层,...
读者反馈了一个死锁案例,比较有意思,我分析总结了一篇文章。 需要一些基础,下面是我在掘金上写的另外五篇调试源码分析锁的文章,可以顺便看看: tech.souyunku.com5ce287… tech.souyunku.com5ce3cf… ...
因为字节码玩的炉火纯青,在工作休闲之余,破解了一大波 Java 系软件。最终的目标是无痛破解,这里的无痛,指的是不需要破坏原始 Jar 包或者 War 包,就可以达到破解目的 下面列举了一些折腾过的软件 分析 GC 日志的桌面端软件 cen...
0x01 引子:传统的拷贝模式 一个实际的场景是静态文件服务器,客户端请求一个静态资源,服务返回内容给它。传统的处理方式是这样的(备注,为了代码简洁起见,省略一些代码) for (;;) { if (lseek(fd, 0, SEEK_SE...
线上最近出现了批量insert的死锁,百思不得姐。死锁记录如下 2018-10-26T11:04:41.759589Z 8530809 [Note] InnoDB: *** (1) TRANSACTION: TRANSACTION 1202...