业务场景下,不影响业务进行的情况下修改大数据量表的表结构做法

21 条法则助你“玩转”分库分表 因此,不到万不得已的情况下,最好避免采用分库分表的解决方案。比如,我们在分库分表时可以指定表的哪些字段为脱敏列,并设置对应的脱敏算法,在数据分片时解析到执行SQL中有待脱敏字段,会直接将字段值脱敏后的写入库表内。分库、分表的分片策略配置是相对独立的,可以各自使用不同的策略与算法,每种策略中可以是多个分片算法的组合,每个分片算法可以对多个分片健做逻辑判断。通过上边的SQL解析得到了分片上下文数据,在匹配用户配置的分片策略和算法,就可以运算生成路由路径,将 SQL 语句路由到相应的数据节点上。 阅读详情

如何不影响业务进行的情况下修改表结构

1.背景

在平时的开发过程中,有些时候因为业务或者需求调整会遇到需要进行对生产线上的表调整结构。一般涉及线上表调整都需要格外注意,调整表结构容易锁表,需要避免影响业务生产。

2.注意事项

1.检查该表是否正在使用中
2.检查该表的数据量级
3.检查数据库版本(不同版本的DDL处理方式不同)
补充:
MySQL各版本,对于DDL的处理方式是不同的,主要有三种:
Copy Table方式: InnoDB最早支持的方式。通过临时表拷贝的方式实现的。新建一个带有新结构的临时表,将原表数据全部拷贝到临时表,然后Rename,完成创建操作。这个方式过程中,原表可读不可写。
Inplace方式:所谓Inplace,也就是在原表上直接进行,不会拷贝临时表。相对于Copy Table方式,这比较高效率。原表可读不可写。
Online方式:MySQL 版本需要>5.6,无论是Copy Table方式,还是Inplace方式,原表只能允许可读不可写。对业务有较大的限制,因此MySQL最新版本中,InnoDB支持了所谓的Online方式DDL。与以上两种方式相比,online方式支持DDL时不仅可以读,还可以写。

3.处理方式

不同的情况有不同的处理方式,根据数据库版本看看DDL方式对业务生产的影响
情况1:表没有使用
处理方式:直接调整即可,因为表没有使用中,即使数据量大也不担心锁表影响业务操作,建议执行前咨询一下运维同学操作的可行性
情况2:表使用中
如果表在使用中的话无论数据量大还是数据量小都建议进行如下操作:

  1. 创建临时表
  2. 将临时表和正式表的名称互换,使得新数据都进入临时表
  3. 将正式表的字段长度进行变更。此过程会进行锁表
  4. 变更完毕后,对临时表和正式表的名称再次互换
  5. 将临时表期变更间插入的数据,追加插入到正式表中。

这样通过通过临时表的话就可以不影响业务生产,之后将临时表的数据写入回来就可以

sql参考:

-- 1.创建临时表
create table xxx_xxx_tmp like xxx_xxx ;
-- 2.将临时表和正式表的名称互换,使得新数据都进入临时表
RENAME TABLE xxx_xxx TO xxx_xxx _bak;
RENAME TABLE xxx_xxx_tmp TO xxx_xxx ;
-- 3.将正式表的字段长度进行变更。此过程会进行锁表
ALTER TABLE xxx_xxx _bak MODIFY COLUMN a varchar(50);
-- 4.变更完毕后,对临时表和正式表的名称再次互换
RENAME TABLE xxx_xxx TO xxx_xxx_tmp ;
RENAME TABLE xxx_xxx _bak TO xxx_xxx ;
-- 5.将临时表期变更间插入的数据,追加插入到正式表中。
INSERT INTO xxx_xxx (a,b,c) SELECT a,b,c FROM xxx_xxx_tmp;
NoSQL选型本质:从业务读写模式匹配数据模型 NoSQL并非关系型数据库的简单替代,而是基于文档、宽列、键值、搜索四种核心数据模型,对现实业务约束进行结构性解耦的技术范式。其底层原理在于存储结构与查询路径的强绑定——MongoDB的BSON序列化决定IO效率,Cassandra的分区键定义物理磁盘布局,Redis的数据结构即API契约,Elasticsearch的倒排索引重构检索逻辑。这种模型驱动的设计,使NoSQL在高并发、海量时序、亚秒级搜索等场景具备不可替代的技术价值。典型应用场景包括实时风控(Redis)、设备监控(Cassandra)、内容管 阅读详情

相关推荐

分库分表 21 条法则,hold 住!

本文介绍了关于分库分表架构的21个通用概念,有一定的了解之后,接下来我们将进入更深度的内容,包括读写分离数据脱敏分布式主键分布式事务配置中心注册中心Proxy服务等实战案例的讲解和源码分析。

m0_67597657的博客 1484

MYSQL8 pt-online-schema-change在线修改大表结构--附带Shell脚本实战

pt-online-schema-change是percona公司开发的一个工具,在percona-toolkit包里面可以找到这个功能,它可以在线修改表结构原理首先它会新建一张一模一样的表,表名一般是_new后缀然后在这个新表执行更改字段操作然后在原表上加三个触发器,DELETE/UPDATE/INSERT,将原表中要执行的语句也在新表中执行最后将原表的数据拷贝到新表中,然后替换掉原表表数据量 6400w ,变更时长:1h23m, 锁表时间4分钟,大家一定要注意主从同步的延迟时间!!!文档。

qq_36588424的博客 1503

滴滴级数据仓库实战:从分层架构到流批一体的核心设计与实现

数据仓库作为企业数据资产的核心载体,其核心原理在于通过ETL(抽取、转换、加载)流程,将分散的业务数据整合为统一、规范、面向分析的数据模型。其技术价值在于打破数据孤岛,为数据分析、商业智能和决策支持提供高质量、可信任的数据基础。典型应用场景包括业务报表、用户画像、实时监控和机器学习等。本文以滴滴出行的海量实时数据处理为背景,深入探讨了如何构建高可用、高性能的数据仓库体系,其中涉及分层建模、流批一体架构等关键实践,并重点解析了在应对高并发和复杂业务场景时,如何通过Flink实时计算和Kafka消息队列等技术组

weixin_30607029的博客 469

mysql大数据量下修改表结构的方法

当表数据量是几百万条以上时,如果要修改原表结构,比如给原表加个列字段,同时在这个表上加索引。 请勿使用以下方式: alter table video_names add column type VARCHAR(255) NOT NULL, add index(type) 原因是: 经过实际测试,表数据量是800多万条,运行上述语句时,几个小时执行不完。 正确方式: 1、创建一个新表tmp_names 2、执行insert into tmp_names(****) select ***** from vide

My_Way666的博客 2511

MCGS 昆仑通态触摸屏 modbus TCP 数据转发

MCGS触摸屏数据转发modbus TCP数据转发

m0_63451859的博客 2万+

Windows10开机无限蓝屏(SrtTrail.txt)

这个问题已经有很多的大佬发过解决办法了,这里仅仅作为自己日后方便查找所写文章 无法开机——自动修复失败,报SrtTrail.txt文件错误,且陷入无限蓝屏的循环 事故 故事的起因是这样的: 开开心心的组装电脑,花了几天时间来配置,然后发现USB3.0的接口太少,于是在某宝上搞到一张pcie转7口USB3.0的转接卡,往电脑上一插 插电,开机,电流轻松跑上去 然后,它和原来的磁盘阵列卡冲突,跳过阵列卡自检直接进入系统,boom,就导致了这场悲剧 解决方法 在蓝屏的界面找到:疑难解答->通过命令提示符 使

Holo__的博客 3万+

Mysql大表修改表结构

mysql大数据量的表进行DDL操作

不积跬步无以至千里 2007

WinCC与PLC在西门子逻辑赛项中的通信配置避坑指南

本文针对西门子逻辑赛项中WinCC与PLC通信配置的常见问题,提供了一套实战避坑指南。重点解析了WinCC、PLC与EET仿真平台的三角通信架构,强调了IP地址规划、防火墙设置等关键环节的注意事项,并给出了系统化的故障诊断流程与排查技巧,帮助选手和技术人员快速定位并解决通信故障,确保监控系统稳定运行。

weixin_29165725的博客 107

MySQL 5.6版本新特性之Online DDL:在线变更表结构且不阻塞数据库服务

一、Online DDL 产生背景: 二、DDL实现方式及原理: 三、Online DDL 实现:Prepare 阶段、DDL 执行阶段、Commit 阶段 四、建议: 五、常见问题

梦~' 2580

国民技术N32G45X SysTick定时器实战:从1us到100ms的精准延迟实现(附完整代码)

本文详细解析了国民技术N32G45X芯片中SysTick定时器的工作原理,并提供了从1微秒到100毫秒的高精度延迟实现方案。通过对比官方库函数的局限性,文章重点介绍了无中断查询模式、时钟源选择策略以及完整的代码实现,帮助嵌入式开发者精准控制时序,适用于LED控制、软件模拟通信协议等多种实战场景。

weixin_29190573的博客 376

新手必看:四旋翼无人机PID调参实战指南(附常见问题排查)

本文为四旋翼无人机新手提供PID调参实战指南,详细解析Kp、Ki、Kd参数的实际意义及调参技巧,包含常见问题排查方法。通过系统化的调参流程和实用参考表,帮助用户快速掌握无人机飞行控制核心技能,避免常见错误,提升飞行稳定性与响应性能。

k0l1m2n3o的博客 601

我们是如何优雅修改正式环境的表结构,而不影响线上运行的?

文中案例说明 需要在大表中添加一个字段group_id,表中有个1千万的数据量,而且有几个索引字段,如果直接在客户端通过sql ALTER TABLE h_app_message ADD group_id bigint(20) 会造成数据库卡顿,耗费时间很长,直接影响线上正常使用。 一般对于较大数据量的修改方式,如果线上并发不是很高的情况下是可以手动处理的,方式如下: 首先备份,备份,备份,重要的事情说三遍 删除表中的索引 修改表结构 修复数据 恢复索引 表结构修改完成 我们的处理方式是通过

公众号:该用户快成仙了 1890

YOLO11实战 第001期-基于yolo11的CrowdHuman密集行人目标检测实战文档(yolo格式数据免费获取)

1.数据阶段在拥挤/遮挡场景下,使用crowdhuman数据集重训练后的yolo11,效果表现较好。crowdhuman数据集标签如下,有Head BBox、Visible BBox、Full BBox。如下图显示:数据集介绍CrowdHuman数据集是旷世发布的用于行人检测的数据集,图片数据大多来自于google搜索。CrowdHuman数据集数据量比较大,15000张,5000张,验证集4370张。训练集和验证集中共有470K个实例,约每张图片包含23个人,同时存在各种各样的遮挡。

深度学习算法工程师,专注于前沿算法研究与实战应用。在这里,我将分享深度学习领域的实战经验、优质数据集资源以及最新论文解读与精度分析,旨在与广大技术爱好者共同探索人工智能的奥秘,助力技术成长与创新。 2168

数据库字段类型精细化选择:从数值型、字符型到日期型,匹配业务场景减少存储冗余的性能优化操作指南

摘要:数据库字段类型选择直接影响存储效率、查询性能和数据一致性。本文系统梳理了数值型、字符型、日期型等常用字段类型的选择策略,强调根据业务需求(如取值范围、精度要求)和数据库特性进行精细化设计。关键要点包括:数值型应平衡范围与存储空间,字符型需匹配长度特性,日期型要兼顾精度与查询效率,并提供了IP地址、地理坐标等特殊场景的优化方案。通过合理选择字段类型,可显著减少存储冗余(典型优化案例节省30%空间)并提升查询性能(响应时间降低25%)。

jingjing45678的博客 1180

Open3D点云数据处理(五):点云、mesh可视化(draw_geometries方法)

本文介绍了Open3D中的draw_geometries可视化方法,可以用于可视化点云和mesh。详细讲述了该方法的各个参数的作用,给出了代码示例。

孙悟空 3139

OpenCASCADE:Direct3D CSharp 示例

OpenCASCADE:Direct3D CSharp 示例OpenCASCADE:Direct3D CSharp 示例 OpenCASCADE:Direct3D CSharp 示例 此示例演示了如何在使用CSharp和Windows Presentation Foundation (WPF)编写的.Net应用程序中使用 OCCT 和 DirectX 库。 .Net、OCCT (C++) 和 DirectX 级别之间的连接由用 C++/CLI 编写的代理库OCCProxy和D3DProxy提供。代理库OCC

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1827

大数据量、高并发下的表字段扩展方案(转)

节选和总结自:沈剑大佬的 啥,又要为表增加一列属性? 、这才是真正的表扩展方案 两篇文章和文章评论 高并发且数据量大情况下的表字段扩展 实际中用的最多是的是方案三和方案五 方案一:版本号 + 通用列 表新增 2 列,一列是扩展字段,一列是版本号,版本号是扩展字段属性的迭代版本。扩展字段值是一个json,每次新增字段,添加一个key就行。 每个业务一个版本或者每次新增一个字段是一个新版本。 优点:...

Lucky小黄人的博客 1462

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MySQL: 大表与大事务的影响及解决方案

摘要: 大表(记录数超千万或文件超10GB)会引发查询性能下降、DDL操作风险等严重问题,如低区分度字段查询导致全表扫描、表结构修改触发元数据锁阻塞业务。优化策略包括: 分库分表:按业务逻辑分区(如订单ID哈希),但需处理跨分区查询和统计聚合,实施成本高; 历史数据归档:将低频数据(如日志、订单)分批迁移至独立存储,减少主库压力,需注意分批删除避免锁表。此外,大事务(长时间、大数据量操作)易引发锁冲突、主从延迟,需拆分事务或异步处理以规避风险。

Wang的专栏 1931

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大数据平台数据入湖规范

大数据平台数据入湖规范第一章 总则1.1 目的为规范大数据平台数据入湖全流程,实现数据“统一标准、统一管控、安全合规、高效可用”,规避数据混乱、质量低下、存储冗余、安全泄露等问题,保障数据湖资产的完整性、一致性和可追溯性,支撑下游数据分析、业务决策及数据应用落地,特制定本规范。本规范适用于所有接入大数据平台数据湖的数据源、数据处理、数据存储、数据管控及相关技术人员、业务人员。1.2 适用范围。

weixin_43864993的博客 430

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

MySQL常用命令速查手册:从入门到实践

避免使用SELECT * 只查询必要字段,JOIN关联查询时确保关联字段有索引。创建表时注意字段类型选择:VARCHAR适合变长字符串,INT存储整数,TIMESTAMP自动记录时间。通过SHOW DATABASES可查看所有数据库列表,USE命令切换当前数据库后,所有操作都将在该数据库上执行。上实践这些命令非常便捷,无需本地安装MySQL环境,生成的演示项目可以直接在线运行和修改。我尝试创建了一个包含用户管理模块的数据库示例,从建表到复杂查询都能流畅执行,特别适合新手快速验证SQL语句效果。

RubyWolf84的博客 237

分库分表的 21 条法则,hold 住!

本文介绍了关于分库分表架构的21个通用概念,有一定的了解之后,接下来我们将进入更深度的内容,包括读写分离数据脱敏分布式主键分布式事务配置中心注册中心Proxy服务等实战案例的讲解和源码分析。

2301_78526383的博客 171

Phinx高级技巧:如何应对复杂数据库重构场景

Phinx作为一款强大的PHP数据库迁移工具,在简单场景下使用起来非常方便。但在面对复杂数据库重构时,掌握一些高级技巧能够让你的迁移工作事半功倍!📈 ## 复杂表结构变更的智能处理 当需要修改复杂的表结构时,直接使用`change()`方法可能无法满足所有需求。这时我们可以结合`up()`和`down()`方法来实现更精细的控制。 例如,在处理需要保留历史数据的表结构变更时,可以这样设计:

gitblog_01069的博客 634

SQL约束详解:数据质量的底层防线与工程实践

SQL约束是关系型数据库中保障数据完整性与一致性的核心机制,其本质是在数据写入时强制执行预定义规则,而非依赖应用层校验。它涵盖NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK和DEFAULT六大类型,分别解决空值控制、唯一性保证、主键组织、跨表关联、业务规则硬编码及默认值兜底等关键问题。在微服务、高并发与多系统共写场景下,约束成为不可绕过的数据共识协议,显著降低脏数据风险与后期治理成本。本文结合MySQL等主流数据库实战案例,深入剖析各类约束的原理差异、性能影响、版

diyudong4681的博客 481

数据仓库建设-(数仓分层篇)

数据仓库分层是数据体系建设的基石,也是大数据领域最重要的设计理念之一。分层的。

m0_59739011的博客 1337

浅谈数仓建模

数据建模简单来说就是基于对业务目标的理解,将各种数据进行整合和关联,并最终使得这些数据可用性,可读性增强,让使用方能快速的获取到自己关心的有价值的信息并且及时的作出响应,为公司带来效益。

qq_42488390的博客 596
上一篇: Hutool之Http工具类使用踩坑
下一篇: 敏感数据统一国标(SM4)加解密Mybatis-Plus/Mybatis实现方案
CodeManYang
博客等级 码龄6年 3粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值