首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

记一次由于DDL语句导致的mysql满CPU线上事故

事情是这样子的,由于公司要推行降本增效,尽量使得服务器能满负载的去工作,我负责的项目由于对数据库的使用比较轻度,所以就降低配置去使用。...而一个新的需求,需要稍微复杂一点的业务逻辑,所以需要对数据库增加一个字段,且增加一个索引,也就是做一点DDL语句的操作,但是由于表的数据量也不小(最大的一张表差不多800多万行,最少也有几百万条数据),...由于项目中有不少批量更新的语句,但是事务执行的条数比较多,一般批量的sql最多可以达到200条,也就导致了大事务的存在,进而导致了Alter做DDL操作的时候需要获取到MDL写锁,这时候阻塞住,而其他的增删改查的操作虽然是获取...MDL读锁,但是由于被前面Alter语句获取的MDL写锁阻塞住,导致业务无法正常执行,进而导致一系列的数据库错误。...第二个原因就是此次ddl语句是运维设置的定时脚本自动执行的,所以没有人工处理的那么迅速,定时脚本也是我提的工单中设置的时间设置错误的原因,才导致定时脚本直接执行了。

62480
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    由于不当的执行顺序导致的死锁

    为了保证线程的安全,我们引入了加锁机制,但是如果不加限制的使用加锁,就有可能会导致顺序死锁(Lock-Ordering Deadlock)。...上篇文章我们也提到了在线程词中因为资源的不足而导致的资源死锁(Resource Deadlock)。 本文将会讨论一下顺序死锁的问题。 我们来讨论一个经常存在的账户转账的问题。账户A要转账给账户B。...为了保证在转账的过程中A和B不被其他的线程意外的操作,我们需要给A和B加锁,然后再进行转账操作, 我们看下转账的代码: public void transferMoneyDeadLock(Account...从而后面的代码无法继续执行,从而导致了死锁。 对于这样的情况,我们有没有什么好办法来处理呢?...我们看下代码实现: private void transfer(Account from,Account to, int amount) throws InsufficientAmountException

    42930

    导致程序崩溃的一行代码,你有写过吗?

    初学编程时,可能经常遇到一些程序崩溃的现象。一般来说,程序崩溃由于操作不当引起的。但是有时候,因为一个程序员的粗心,正式版本的程序出现崩溃状况这就很不因该了。...言归正传,我就遇到过因为少写了一行代码而导致ios闪退的问题。...由于我没有写过ios的代码,下面我截取网上找的一个获取数组的元素的代码,不知道对不对,仅供参考。...一般程序员在写代码的时候都不会忘记判断,那么你遇到过这样的因为粗心导致程序崩溃的问题吗?下面我们来具体看看数组下标越界的问题。...通常预防数组越界导致程序运行出错的方法有下面几种,可以参考一下: 检查传入参数的合法性,每次操作的时候都检查一遍参数 在处理的时候,可以先判断数组的大小,比如我上面举的例子。

    1.1K20

    美团一面:为什么线程崩溃崩溃不会导致 JVM 崩溃

    大家好,我是坤哥 网上看到一个很有意思的美团面试题:为什么线程崩溃崩溃不会导致 JVM 崩溃,这个问题我看了不少回答,但发现都没答到根上,所以决定答一答,相信大家看完肯定会有收获,本文分以下几节来探讨...线程崩溃,进程一定会崩溃吗 进程是如何崩溃的-信号机制简介 为什么在 JVM 中线程崩溃不会导致 JVM 进程崩溃 openJDK 源码解析 线程崩溃,进程一定会崩溃吗 一般来说如果线程是因为非法访问内存引起的崩溃...,操作系统会认为这很可能导致一系列严重的后果,于是干脆让整个进程崩溃 线程共享代码段,数据段,地址空间,文件 非法访问内存有以下几种情况,我们以 C 语言举例来看看 针对只读内存写入数据 // 向只读内存写入数据...,所以统一会报 Segment Fault 错误(即段错误),这些都会导致进程崩溃 进程是如何崩溃的-信号机制简介 那么线程崩溃后,进程是如何崩溃的呢,这背后的机制到底是怎样的,答案是信号,大家想想要干掉一个正在运行的进程是不是经常用...这种场景显然不能用 kill -9,不然一下把进程干掉了资源就来不及清除了 为什么线程崩溃不会导致 JVM 进程崩溃 现在我们再来看看开头这个问题,相信你多少会心中有数,想想看在 Java 中有哪些是常见的由于非法访问内存而产生的

    2.2K20

    Python脚本中使用 if 语句导致的错误代码

    在 Python 脚本中使用 if 语句是一种常见的控制流程结构,用于根据条件决定程序的执行路径。当使用 Python 中的 if 语句时,可能会导致一些常见的错误。...Audio": ^用户提供了完整的代码,其中包含了多个 elif 语句,用于处理不同文件类型的转换。...这导致了代码中某些行缩进不正确,从而引发了错误。为了解决这个问题,用户可以采取以下措施:将代码中的制表符替换为空格,确保所有缩进都正确。...在实际的 Python 脚本中,我们可以根据具体的需求和条件来编写 if 语句,实现不同情况下的代码逻辑执行。...需要注意的是,在 Python 中 if 语句的条件后面需要使用冒号 :,而且条件成立的代码块需要缩进,通常是四个空格或一个制表符的缩进。

    14610

    MySQL ProxySql 由于漏洞扫描导致的 PROXYSQL CPU 超高

    那到底什么导致了PROXYSQL 系统的CPU 在某个时间段突然超高并且只能进行相关的重启后,CPU 才能下降....X11 协议端的端口进行扫描,在扫描时会反馈,下面的信息, 8.0.5 是在PROXYSQL 设置的,因为如果使用了MYSQL 8 后在PROXYSQL 中的version 信息不设置的情况下, 会导致...所以这里漏扫程序会对敏感词 password 展开尝试性的密码匹配库的嗅探工作,而这样的工作导致,proxysql 在X11 端口中出现问题,进入一个死循环....最终导致PROXYSQL 出现CPU 超高的问题....所以如果CPU 高先分析以下几个问题 1 CPU 在什么 时间点高,是一直高还是有时间段 2 如果是有时间点的高,则考虑业务,或者业务触发的某些业务量上涨后的问题 3 如果是CPU 一直高,则考虑是由于一些

    86940

    Node出错导致运行崩溃的解决方案

    事实上NodeJS里程确实有“脆弱”的一面,单线程的某处产生了“未处理的”异常确实会导致整个Node.JS的崩溃退出,来看个例子, 这里有一个node-error.js的文件:  var http...console.log('Server running at http://127.0.0.1:8080/'); 启动服务,并在地址栏测试一下发现 http://127.0.0.1:8080/  不出所料,node崩溃了...Middleware(HttpModule),最终到达Handler,如下图所示:  这 些Middleware和Handler在NodeJS中都有一个特点,他们都是回调函数,而回调函数中是唯一会让Node在运行时崩溃的地方...事实上现在的NodeJS WEB框架几乎都是这么做的,如 OurJS开源博客所基于的 WebSvr 就有这么一处异常处理代码:  try { handler(req, res); }...面对这种情况,我们就应该为nodejs应用添加守护进程,让NodeJS遭遇异常崩溃以后能马上复活。  另外,还应该把这些产生的异常记录到日志中,并让异常永远不再发生。

    5K160

    英特尔驱动导致Qt程序必定崩溃

    背景用户反馈Qt程序启动即必现崩溃,用户环境为Dell笔记本电脑,具有英特尔&英伟达双显卡,win10 64位分析首先崩溃后,需要对用户提供的dmp文件进行分析dmp分析打开用户提供的dmp文件,发现栈帧被破坏导致堆栈无法正常显示这里需要手动还原堆栈...C:\Users\qt\work\qt\qtbase\src\gui\kernel\qwindow.cpp @ 527]上面还原问题隐藏了业务敏感信息,不过问题大同小异还原到这里基本上可以确定出问题的代码是在创建第一个窗口...review一下这里的代码,创建第一个窗口时,qt需要确认这个窗口需要出现在显示器的哪里,调用到了calcPosition然后因为顶层窗口的原因,这里一定会走到forcedScreenForGLWindow...CreateDeviceLHDDI上来创建设备驱动相关句柄,然后调用到显卡驱动模块内部问题分析用户出问题的模块在于Dell电脑上装了笔记本厂提供的定制英特尔显卡驱动(27版本)模块,导致的崩溃问题,类似问题也有大量的反馈...:英特尔-WPF应用崩溃、英特尔-QT崩溃、英特尔-D3d崩溃基本上回复都是升级驱动版本,回滚驱动版本等操作修复问题,但是现网观测不仅仅英特尔驱动会导致我们崩溃,英伟达、AMD显卡模块同样会有问题,所以这里考虑屏蔽驱动模块的加载来解决问题

    37530

    记一次Msyql崩溃导致无法启动

    mysql容器一直在不断启动…断开…启动…断开,之所以会这样是因为起初创建mysql容器是设置了:–restart always 就是只要Docker服务活着,该容器就会启动,如果断开了就会自动重启,由于崩溃...3 ( SRV_FORCE_NO_TRX_UNDO) 崩溃恢复后 不运行事务 回滚。 4 ( SRV_FORCE_NO_IBUF_MERGE) 防止插入缓冲区合并操作。...如果它们会导致崩溃,请不要这样做。不计算表 统计信息。此值可能会永久损坏数据文件。使用此值后,准备删除并重新创建所有二级索引。设置 InnoDB为只读。...如果您知道给定表导致回滚时意外退出,则可以将其删除。...如果遇到由于批量导入失败而导致的失控回滚ALTER TABLE,您可以终止 mysqld 进程并设置 innodb_force_recovery为 3在不回滚的情况下启动数据库,然后DROP是导致失控回滚的表

    1.6K10

    mysql由于临时表导致IO过高的性能优化过程分享

    SQL语句如下: SELECT DISTINCT g.*, cp.name AS cp_name, c.name AS category_name, t.name AS type_name FROMgm_game...这条sql语句的问题其实还是比较明显的: 查询了大量数据(包括数据条数、以及g.* ),然后使用临时表order by,但最终又只返回了20条数据。...DBA观察到的IO高,是因为sql语句生成了一个巨大的临时表,内存放不下,于是全部拷贝到磁盘,导致IO飙升。 【优化方案】 优化的总体思路是拆分sql,将排序操作和查询所有信息的操作分开。...SQL优化 如果表的设计已经确定,修改比较困难,那么也可以通过优化SQL语句来减少临时表的大小,以提升SQL执行效率。...常见的优化SQL语句方法如下: 1)拆分SQL语句 临时表主要是用于排序和分组,很多业务都是要求排序后再取出详细的分页数据,这种情况下可以将排序和取出详细数据拆分成不同的SQL,以降低排序或分组时临时表的大小

    3.2K40

    【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语句执行慢

    问题现象某局点yashandb cpu使用率100%,经线上分析是由于几个sql执行慢,其中一个sql为简单的单行等值绑定变量过滤+排序。经分析执行计划,相对以前有所变化,走了另外一个索引(效率低)。...问题的风险及影响sql语句执行慢,客户的业务受到影响。操作系统cpu 100%可能导致宕机。...问题影响的版本22.2.10.100问题发生原因hist_head$中表对应列的analyze time小于tab$中表的analyze time,在执行到estColEqualOrNotParam方法时,由于第一个参数...colStats为null导致获得默认selectivity(0.04)后退出。...time,或者hist_head$中没有表中相关列的数据,那么就会用默认的selectivity(0.04)来做过滤条件估算,最终导致执行计划走偏。

    3400
    领券