生产问题
海里真的有鱼
每次发版,必把数据库搞炸了的程序员
展开
-
java 线上生产问题排查思路-【jvm内存溢出】
栈内存可以分为虚拟机栈(VM Stack)和本地方法栈(Native Method Stack),除了它们分别用于执行Java方法(字节码)和本地方法,其余部分原理是类似的(以虚拟机栈为例说明)。如果递归的次数足够多,多到栈中栈帧所使用的内存超出了栈内存的最大容量,此时JVM就会抛出StackOverflowError。内存溢出指程序申请内存时,没有足够的内存供申请者使用。内存溢出就是你要的内存空间超过了系统实际能分配给你的空间,相当于此时系统没法满足你的需求,就会报内存溢出的错误。原创 2024-07-12 14:01:08 · 751 阅读 · 0 评论 -
大批量更新禁止for循环更新单个,要用批量更新
大批量操作可能会造成严重的主从延迟,特别是主从模式下,大批量操作可能会造成严重的主从延迟,因为需要 slave 从 master 的 binlog 中读取日志来进行数据同步。大批量写操作(UPDATE、DELETE、INSERT),需要分批多次进行操作。binlog 日志为 row 格式时会产生大量的日志。场景:65w条 for循环更新单个,出现了主从异常。原创 2024-07-08 13:46:05 · 387 阅读 · 0 评论 -
一张表数据量有几百万,新增一个字段要花一小时才执行结束,这一小时内影响点有哪些
在字段新增过程中,数据库可能会经历一定程度的性能下降,因为数据库引擎需要执行大量的写操作来更新表中的每一行数据。:在新增字段的过程中,数据库服务器的 CPU、内存和磁盘等资源可能会被大量使用,导致系统负载增加。:在更新过程中,如果出现错误或中断,可能会导致数据不一致的情况。:如果应用程序依赖于新增字段的数据,那么在字段新增期间,应用程序可能无法正常工作或会收到不完整或错误的数据。为了减少这些影响,您可以考虑在系统负载较低的时段执行这样的操作,或者在操作之前做好充分的备份和准备工作。原创 2024-07-05 16:06:07 · 161 阅读 · 0 评论