【重点文章】服务升级惨痛教训

文章目录

    • 事故解析:
    • 避免方法
    • 涉及知识

  以前怎么接触过大表,所以alter操作我都是一次性执行好几条的,这几条一下子干过去了
在这里插入图片描述
在这里插入图片描述
  结果就是一直在转圈执行,因为alter产生的是表级排它锁,所以有关这几个表的查询更新操作全部处于阻塞状态,运营那边查询全部失效。
  去数据库SHOW FULL PROCESSLIST,发现State列出现大量“Waiting for table metadata lock”,紧张感拉满了。马上寻找这几个alter语句的进程id,在对应的“Info”列可以查看到对应表的操作,找到正在对该表进行操作的会话,记住“Id”, 执行KILL ID。必须找对这几个,不然kill的其他的是没用的。还有一种解决方法就是重启你的mysql数据库实例(如果试过或者你胆子大的话)
  紧张的要死,脑子都难以思考,遇到这种情况尽量让自己的同事也参与进来,或者给技术经理报告,看看怎么解决
在这里插入图片描述

事故解析:

  在MySQL中,ALTER TABLE 语句通常会对表进行锁定以执行结构修改操作。具体而言,ALTER TABLE 语句会获取一个排他锁(Exclusive Lock),这意味着其他并发的写操作和读操作都将被阻塞,直到 ALTER TABLE 完成。因此,在执行 ALTER TABLE 期间,其他对该表的写操作(如 INSERT、UPDATE、DELETE)和读操作(如 SELECT)可能会被阻塞,直到 ALTER TABLE 完成。
  这里有个注意的点:添加新列或修改列的数据类型通常需要较短的锁定时间,而重命名表或删除列可能需要更长的锁定时间。

避免方法

  1.在执行 ALTER TABLE 之前,尽量预估该操作需要的时间,并在低峰期执行,以减少对其他事务的影响。如果你用的是大厂的云服务器,在数据库的实例中找到DBA助手(以华为云为例,其他厂家名字可能不同),可以查看实时的活跃会话有多少个,如果比较少那说明处于低峰期;或者去高级运维信息里查看数据库连总接数,根据数量多少去判断
  2.如果对一个表有多个字段要修改或者删除,则分割成几条sql一个个去执行
  3.调整事务隔离级别:在某些情况下,将事务隔离级别调整为较低的级别(如读已提交)可能会减少对锁的需求,从而减少对 SELECT 查询的阻塞。(不推荐,拆东墙补西墙罢了)

涉及知识

  1.乐观锁不是mysql自带的要自己去实现,悲观锁涉及排它锁和共享锁。读(select)操作产生的是共享锁,其他的读操作可以继续加共享锁(但不能加排它锁,也就是不能增删改),通俗来说就可以一直select不会产生阻塞,而写操作( update/delete/insert)加的是排它锁,只允许自己一个锁,在它执行完其他操作都处于阻塞状态。

  2.MySQL中InnoDB加锁机制
select… :不加锁
select… lock in share mode:加共享锁
select… for update:加排它锁
update/delete/insert默认加排它锁

   3.在数据库中,"加锁"和"获取锁"通常是指同一个概念,即在执行操作之前,通过某种方式将锁应用于数据或资源,以控制并发访问和维护数据的一致性。
   "加锁"是指在执行操作之前,显式地将锁应用于数据或资源。这意味着在进行读取或写入操作之前,需要先获取相应的锁。
   "获取锁"是指在执行操作时,尝试获取已经存在的锁。如果锁可用且没有被其他事务持有,那么获取锁的操作会成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/155715.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CTF-栈溢出-基本ROP-【ret2shellcode】

文章目录 ret2shellcodeHTBCyberSanta 2021 sleigh思路exp ret2shellcode 控制程序去执行我们自己填充的代码。 条件: 我们填充的代码的位置具有可执行权限 HTBCyberSanta 2021 sleigh 检查保护 Has RWX segments提示有可读可写可执行的段 main函数 banner函数…

教师资格证的照片是什么底色?一键替换证件照背景色

现在在报考教师资格证时,我们提交个人资料信息都是在网络上进行的,最关键的一步就是要提交证件照,很多小伙伴还都不太情书教师资格证证件照要求,比如规定的证件照背景色是什么颜色,今天就围绕着这个问题给大家详细说明…

赶快来!程序员接单必须知道的六大注意事项!!!

花花世界迷人眼,增加实力多搞钱!对于咱程序员来说,搞钱的最好办法就是网上接单了,相信也有不少小伙伴已经在尝试了吧!但是如何正确的搞钱呢?其中的注意事项你真的了解吗? 本期就和小编一起来看…

使用nacos配置中心管理配置文件时,springcloud程序启动报错,无法找到对应的配置文件(加载到了错误的配置文件)

这里写目录标题 一、场景二、关键依赖三、报错信息四、排查1、bootstrap.yml配置2、查看Nacos配置中心3、重启后程序依旧报错,查看启动日志,发现Nacos加载到了错误的配置文件4、Debug查看源码,企图弄清楚使用错误应用名的原因5、找不到使用依…

DDR3 的相关设计规范(个人总结)

文章目录 阻抗控制布局布线电源处理时序要求 DDR3 的相关设计规范(个人总结) 阻抗控制 DDR3 要严格控制阻抗,单线 50ohm,差分 100ohm,差分一般为时钟、DQS。在走线过程中,尽量减小阻抗跳变的因素,比如:换层(无法避免…

CSS特效012:边框线条环绕流动效果

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS…

C++二分查找算法:规划兼职工作

题目 你打算利用空闲时间来做兼职工作赚些零花钱。 这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 profit[i]。 给你一份兼职工作表,包含开始时间 startTime,结束时间 endTime 和预计报酬 pro…

Vue3 生命周期

如下是Vue3的生命周期函数图: 一、Vue2生命周期和Vue3声明周期的区别 1. Vue2 中,只要创建Vue实例对象而不需要挂载就可以实现beforeCreate 和 created 生命周期函数。 Vue3中必须要将Vue实例对象挂载完成,所有的准备工作做完,…

V10 桌面版、服务器版系统加固

V10 桌面版、服务器版系统加固 一、 文档说明 本文档中涉及的加固方法主要包括:密码策略配置、防火墙规 则配置、禁用高风险服务等。 二、 V10 桌面版系统加固 2.1 密码策略配置 密码策略包括密码老化控制策略和密码复杂度策略。密码老化 控制策略需要配置/etc…

Git客户端(TortoiseGit)使用

参考文章: https://www.cnblogs.com/xuwenjin/p/8573603.html 【精选】使用TortoiseGit工具进行开发(连接远程仓库进行克隆、拉取、获取、提交、推送、新建/切换/合并分支、解决冲突)_tortoisegit连接远程仓库-CSDN博客 tortoise git 拉取…

二进制的形式在内存中绘制一个对象实例

一、引用类型实例的内存布局 从内存布局的角度来看,一个引用类型的实例由如下图所示的三部分组成:ObjHeader TypeHandle Fields。前置的ObjHeader用来缓存哈希值和同步状态,TypeHandle部分存储类型对应方法表(Method Table&…

2023.11.17 -hivesql调优,数据压缩,数据存储

目录 1.hive命令和参数配置 2.hive数据压缩 3.hive数据存储 0.原文件大小 18.1MB 1.textfile行存储格式, 压缩后size:18MB 2.行存储格式:squencefile ,压缩后大小8.89MB​ 3. 列存储格式 orc - ZILIB ,压缩后大小2.78MB 4.列存储格式 orc-snappy ,压缩后大小3.75MB 5…

设计模式-中介者模式-笔记

Medicator中介者模式 动机(Motivation) 在软件构建过程中,经常会出现多个对象相互关联交际的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。 …

简单回顾矩阵的相乘(点乘)230101

[[1 0 1][1 1 0]] [[3 0 0 3][2 2 1 3][1 3 1 1]] [[4. 3. 1. 4.][5. 2. 1. 6.]]乘以 c11 a11*b11 a12*b21 a13*b31 1*3 0*2 1*1 4 c12 a11*b12 a12*b22 a13*b32 1*0 0*2 1*3 3 c13a11*b13 a12*b23a13*b33 c14a11*b14 a12*b24a13*b34 c21a21*b11 a22*b21 a23*b…

【iDRAC】突破错误信息壁垒,利用iDRAC提高效率

序 面对旧服务器上的黄色警示灯,工作人员往往陷入困惑。更糟糕的是,如果该服务器转手多次,缺少root用户密码和IP地址,那么要访问服务器iDRAC就更困难了。但是出现问题的硬件蕴含着重要信息,为了解开这个谜团&#xff…

基于STC12C5A60S2系列1T 8051单片的IIC总线器件数模芯片PCF8591实现数模转换应用

基于STC12C5A60S2系列1T 8051单片的IIC总线器件数模芯片PCF8591实现数模转换应用 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍IIC总线器件数模芯片PCF8591介绍通过按…

windows11编译ffmpeg

安装msys2,直接https://www.msys2.org/上下载exe安装即可,默认路径; 选择msys2-mingw64启动,将下载源替换为中科大 sed -i "s#mirror.msys2.org/#mirrors.ustc.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*pacman -S…

RocketMQ的适用场景有哪些?

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…

Leetcode刷题详解——衣橱整理

1. 题目链接:LCR 130. 衣橱整理 2. 题目描述: 家居整理师将待整理衣橱划分为 m x n 的二维矩阵 grid,其中 grid[i][j] 代表一个需要整理的格子。整理师自 grid[0][0] 开始 逐行逐列 地整理每个格子。 整理规则为:在整理过程中&am…

解决:Android TextView 设置斜体后右侧文字被遮挡

一、问题说明 遇到一个比较奇怪的情况&#xff0c;给 TextView 文字设置倾斜后&#xff0c;右侧的文字会被遮挡&#xff0c;感觉这应该是 Android 的一个 bug &#xff01; 上代码&#xff1a; <TextViewandroid:id"id/tv_title"android:layout_width"wra…