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

news2024/11/28 2:55:20

文章目录

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04-学成在线之系统管理服务模块之查询数据字典表中的内容,前后端联调测试

前后端联调 配置前端环境 实际开发中先由后端工程师将接口设计好并编写接口文档并交给前端工程师,前后端的工程师就开始并行开发 前端开发人员先自己mock数据即使用假数据进行开发,当后端代码完成后前端工程师尝试请求后端接口获取数据然后渲染到页面 第一步: 首…

大力说企微第一课:企业微信的注册验证和认证

这段时间有好几个朋友问我,怎么用企业微信,还有一些朋友反馈,企业微信使用起来不太方便。 在我的印象中,企业微信确实不如微信那么简单,毕竟用户对象是企业,是企业就有多个部门,就有流程&#x…

ubuntu20源码编译搭建SRS流媒体服务器

第一、下载源码 下载源码,推荐用Ubuntu20: git clone -b develop https://gitee.com/ossrs/srs.git第二、编译 2.1、切换到srs/trunk目录: cd srs/trunk2.2、执行configure脚本 ./configure2.3、执行make命令 make2.4、修改conf/rtmp.c…

零代码实现问卷网与巨量引擎的对接

通过数环通,您可以使用不到几分钟的时间即可实现问卷网与巨量引擎的对接与集成,从而高效实现工作流程自动化,降本增效! 1.产品介绍 巨量引擎是字节跳动旗下的营销服务品牌,它整合了字节跳动旗下的产品及海量内容&…

简单高效的定制移动固态硬盘,稳定易用的办公小助手

我在平时的工作中,常常需要处理各种大文件和数据,如果硬盘速度跟不上,那工作效率就会大幅降低。今年固态硬盘的价格大幅下降,有很多国产品牌加入其中,很容易找到一款性价比高的固态硬盘,搭配硬盘盒使用&…

mac清除所有数据,不抹除的情况下如何实现?

mac清除所有数据是一个比较复杂的任务,尤其是在不进行系统抹除的情况下。但是,如果你想要将mac完全恢复到出厂设置的状态,同时保留数据,本文将介绍一些可行的方法,帮助您在不抹除硬盘数据的情况下,让mac清除…

Ganache结合内网穿透实现远程不同局域网公网访问

文章目录 前言1. 安装Ganache2. 安装cpolar3. 创建公网地址4. 公网访问连接5. 固定公网地址 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,忍不住分享一下给大家。 点击跳转到网站…

Zookeeper Java 开发,自定义分布式锁示例

文章目录 一、概述二、导入依赖包三、创建锁的过程3.1 通过 create 创建节点信息3.2 AsyncCallback.StringCallback 回调函数3.3 AsyncCallback.Children2Callback 的回调函数3.4 Watcher 的回调函数 四、完整示例4.1 完整分布式锁代码4.2 测试类 如果您还没有安装Zookeeper请看…

Shopee选品工具软件——知虾,助您轻松把握市场趋势

在如今竞争激烈的电商市场中,了解市场趋势和数据分析是成功的关键。对于Shopee虾皮平台上的商家来说,知虾是一款强大的选品工具软件,它提供了全面的数据分析服务,帮助商家快速了解大盘走势,并挖掘潜力行业类目。本文将…

[msg_msg] corCTF2021 -- fire_of_salvation

前言 msg_msg 是 kernel pwn 中经常用作堆喷的结构体. 其包含一个 0x30 大小的 header. 但 msg_msg 的威力远不如此, 利用 msg_msg 配合其他堆漏洞可以实现任意地址读写的功能. 程序分析 本题给了源码, 可以直接对着源码看. 并且题目给了编译配置文件, 所以可以直接编译一个…

C 语言指针和数组

C 语言指针和数组 在本教程中,您将了解C语言编程中数组与指针之间的关系。您还将学习使用指针访问数组元素。 在了解数组与指针之间的关系之前,请确保检查以下两个主体: [C 数组](C 语言数组-CSDN博客)[C 指针](C 语言指针-CSDN博客) 数组…

2023上海国际电力电工展盛大举行 规模创新高 与行业「升级、转型、融合」

由中国电力企业联合会、国家电网主办及雅式展览服务有限公司承办的「第三十一届上海国际电力设备及技术展览会 (EP Shanghai 2023)」从11月15日起至17日一连三天于上海新国际博览中心盛大举行,并首度增设专题子展「上海国际储能技术应用展览会」。本届展会以“升级、…

2023_“数维杯”问题B:棉秸秆热解的催化反应-详细解析含代码

题目翻译: 随着全球对可再生能源需求的不断增加,生物质能作为一种成熟的可再生能源得到了广泛的关注。棉花秸秆作为一种农业废弃物,因其丰富的纤维素、木质素等生物质成分而被视为重要的生物质资源。虽然棉花秸秆的热解可以产生各种形式的可…

jffs2文件系统(二)

本篇文章讲解一下如何制作jffs2文件系统,以及如何在linux下把jffs2作为根文件系统使用。 文件系统制作 制作工具:mtd_utils,可以自己安装 mkfs.jffs2 -o root-uclibc-jffs2 -r root-uclibc -e 0x10000 -s 0x1000 -n -l -X zlib --pad0x10000…

基于卷积神经网络的猫种类的识别

1.介绍 图像分类是计算机视觉中的一个关键任务,而猫种类识别作为一个有趣且实用的应用场景,通过卷积神经网络(CNN)的模型能够识别猫的不同品种。在这篇博客中,将详细介绍如何利用深度学习技术构建模型,从而…

gd32 USB HOST 接口

接口 CPU引脚 复用 DM PB14 USBHS_DM AF12 DP PB15 USBHS_DP AF12

互联网上门预约洗衣洗鞋店小程序;

拽牛科技干洗店洗鞋店软件,方便快捷,让你轻松洗衣。只需在线预约洗衣洗鞋服务,附近的门店立即上门取送,省心省力。轻松了解品牌线下门店,通过列表形式展示周围门店信息,自动选择最近门店为你服务。简单填写…

【Linux专题】SFTP 用户配置 ChrootDirectory

【赠送】IT技术视频教程,白拿不谢!思科、华为、红帽、数据库、云计算等等https://xmws-it.blog.csdn.net/article/details/117297837?spm1001.2014.3001.5502 红帽认证 认证课程介绍:红帽RHCE9.0学什么内容,新版有什么变化-CSDN…

【带头学C++】----- 七、链表 ---- 7.1 链表的概述

目录 七、链表 7.1 链表的是什么? 7.2数组和链表的优点和缺点 7.3 链表概述 ​编辑 7.4 设计静态链表 7.4.1 定义一个结点(结构体) 7.4.2 使用头结点构建一个单向链表 七、链表 7.1 链表的是什么? C链表是一种数据结构&a…