添加一个索引要投产,需要哪些步骤?

2024-05-09 07:36
文章标签 步骤 需要 索引 投产

本文主要是介绍添加一个索引要投产,需要哪些步骤?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

9b834e5454a444fce8f350ee88fc1012.png

编程一生

0db72c1cbe9388745e41c9af0e4be3e0.png

致力于写大家都能看懂的、有深度的

技术文章

05/2024

01

开场白

46ae62bfc7508a5fae596c86ea7b32fd.png

亚马逊有个bar raiser文化。就是说新招来的人一定要超过之前入职人员的平均水平,宁缺毋滥。越来越多的公司在推行这种文化。在这种氛围下:“虽然我不懂,但是活儿是能出来的”这种解决问题型人才也在以飞奔的速度转型为“活儿能,话能说明白”的综合素质人才。

7dca2be972361c7e00dc830dc3063ef4.png

今天咱们就来聊一聊一个简单的添加索引在这个时代要怎样实施。

7d1c0788021a3dcb40b11e9e23e3b32b.png

02

添加普通索引可能引起的问题

尽管添加索引可以优化SQL语句的性能,但是添加索引的同时也会带来不小的开销。尤其是在有大量的索引的情况下。

mysql添加索引造成的影响如下:

  • DML(数据操作语言)影响,在表上添加索引会直接影响写操作性能(因为添加记录的同时还有创建相应记录的索引,这也是要耗资源的)。

  • DDL(数据定义语言)影响,随着表大小的不断增加,对性能的影响也会不断增加。比如:ALTER语句会耗费更多的时间。

  • 磁盘空间的影响,往往在添完一个索引后表占用的空间大小会成倍地增加。

4bee7486a90a6d26ee0a5bab30965358.png

03

新增唯一索引造成数据丢失问题

MySQL目前主要有三种DDL方式,MySQL原生的DDL,pt-osc和gh-ost。从gh-ost和pt-osc的原理上来讲,全量都是通过insert ignore拷贝到新表,然后增量数据通过触发器或者binlog的方式merge到新表中,这样的话在以下三种场景会出现数据丢失:

  • 新加字段,并对该字段添加唯一索引;如果这时候使用 gh-ost 变更,最后只会剩下一条记录

  • 原表存在重复值,如下数据表;如果这时候使用 gh-ost变更,就会丢弃重复记录

  • 改表过程中新写(包含更新)的数据出现重复值,如果这时候使用 gh-ost 变更,在拷贝原表数据期间,可能会覆盖重复数据

方案

是否丢数据

建议

原生
ONLINE

DDL 不丢数据适合小表,及对从库延迟没要求的场景

pt-osc

可能丢数据,无辅助功能可以避免丢数据的场景不适合添加唯一索引
gh-ost可能丢数据,有辅助功能可以避免部分丢数据的场景适合添加唯一索引

4333c553d8356ac7ecb8b3f248c0a756.png

04

添加索引投产前要怎样做

测试环境充分验证

添加索引前备份,在索引后,将数据与备份数据进行比对,确保数据符合预期。

观察添加索引的耗时,准确评估对生产环境的影响。

投产前通知并制定紧急预案

通知DBA和所有使用此数据库的团队和其他相关团队。DBA在添加索引前先备份,一旦出现问题可立即回滚。

投产时

业务低峰期进行变更降低业务影响。密切观察监控,做好回滚准备。

75bf259fd037aba3d86943c5e8d6ff98.png

05

总结

之前遇到过一个开发小哥哥修改了MQ的一个参数,这个参数的作用是:在消费消息时,原本线程来获取需要消费的消息,如果获取不到就阻塞直到有消息为止;修改后的逻辑是线程来获取需要消费的消息,如果获取不到就返回做别的事情,过一段时间再来获取消息。如果粗略来考虑:这就是把阻塞变成非阻塞来提高效率的一个配置修改啊。所以开发小哥哥也没压测,甚至没有告诉任何人他做了这个变更,直接投产了。这个变更造成了公司数千万的资金损失。

敬畏生产,不要因为只是添加一个索引或者修改一个配置而不做测试直接投产。

00e22c51e54aa2d9252cf20bd85381d2.png

42613f0e84a50b6c4eaf0190c5f443df.jpeg

这篇关于添加一个索引要投产,需要哪些步骤?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/972785

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

arduino ide安装详细步骤

​ 大家好,我是程序员小羊! 前言: Arduino IDE 是一个专为编程 Arduino 微控制器设计的集成开发环境,使用起来非常方便。下面将介绍如何在不同平台上安装 Arduino IDE 的详细步骤,包括 Windows、Mac 和 Linux 系统。 一、在 Windows 上安装 Arduino IDE 1. 下载 Arduino IDE 打开 Arduino 官网

贝壳面试:什么是回表?什么是索引下推?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50+)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: 1.谈谈你对MySQL 索引下推 的认识? 2.在MySQL中,索引下推 是如何实现的?请简述其工作原理。 3、说说什么是 回表,什么是 索引下推 ? 最近有小伙伴在面试 贝壳、soul,又遇到了相关的

Mysql高级篇(中)——索引介绍

Mysql高级篇(中)——索引介绍 一、索引本质二、索引优缺点三、索引分类(1)按数据结构分类(2)按功能分类(3) 按存储引擎分类(4) 按存储方式分类(5) 按使用方式分类 四、 索引基本语法(1)创建索引(2)查看索引(3)删除索引(4)ALTER 关键字创建/删除索引 五、适合创建索引的情况思考题 六、不适合创建索引的情况 一、索引本质 索引本质 是 一种数据结构,它用

Java程序到CPU上执行 的步骤

相信很多的小伙伴在最初学习编程的时候会容易产生一个疑惑❓,那就是编写的Java代码究竟是怎么一步一步到CPU上去执行的呢?CPU又是如何执行的呢?今天跟随小编的脚步去化解开这个疑惑❓。 在学习这个过程之前,我们需要先讲解一些与本内容相关的知识点 指令 指令是指导CPU运行的命令,主要由操作码+被操作数组成。 其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也

Vue2电商项目(二) Home模块的开发;(还需要补充js节流和防抖的回顾链接)

文章目录 一、Home模块拆分1. 三级联动组件TypeNav2. 其余组件 二、发送请求的准备工作1. axios的二次封装2. 统一管理接口API----跨域3. nprogress进度条 三、 vuex模块开发四、TypeNav三级联动组件开发1. 动态展示三级联动数据2. 三级联动 动态背景(1)、方式一:CSS样式(2)、方式二:JS 3. 控制二三级数据隐藏与显示--绑定styl

使用WebP解决网站加载速度问题,这些细节你需要了解

说到网页的图片格式,大家最常想到的可能是JPEG、PNG,毕竟这些老牌格式陪伴我们这么多年。然而,近几年,有一个格式悄悄崭露头角,那就是WebP。很多人可能听说过,但到底它好在哪?你的网站或者项目是不是也应该用WebP呢?别着急,今天咱们就来好好聊聊WebP这个图片格式的前世今生,以及它值不值得你花时间去用。 为什么会有WebP? 你有没有遇到过这样的情况?网页加载特别慢,尤其是那