Mysql如何高效ALTER TABL
ALTER TABLE 缺点
MySQL 的ALTER TABLE 操作的性能对大表来说是个大问题。
MySQL MySQL 执行大部分修改表结构操作的方法是用新结构的 创建一个,空表从旧表中查出所有数据插入,新表然后删除旧。表这样操作可能需要花费很长,时间 如内果存不足而表又很大而且还有很多索引的情况下尤其如此。
此许多人 都有这样的经验,ALTER ALTER TABLE 操作需要花费数个小时其
数天才能完成。
对于MySQL 5.5 及更早版本
一般而言大部分ALTER TABLE 操作将导致MySQL 服务中断,常用的技巧有两种:
- 一种是先在台一不提供服务的机上器执行ALTER TABLE 操作,然 后和提供服
务的主库进行切换。 - 另外 一技巧种 是““影子拷贝""。影拷贝子 的技巧是用老的表结构创建一张和源表一样表结构的新表,然后通过重命名和删表操作交换两张表
不是有所的ALTER TABLE 操作都会引起表重建的
下面这操作些 有是可能不需要重建表的,
- 移除((不 是增加) 一个列的AUTO_INCREMENT 属性。
- 增加、移除, 或更改ENUM 和SET 常量。如 果移除的是已经有行数据用到其值的常量, 查询将返回会 一个空字串值。
例:修改字段长度
假如要修改电影的默认租赁 期,限从三 天改到五天。下面传统方法
mysql> ALTER TABLE sakila.film
-> MODIFY COLUMN rental_duration TINYINT(3) NOT NULL DEFAULT 5;
SHOW STATUS 显示这个语句做了1 000 次读和1 000 次插入 操作。换名话说,它拷贝了 整张表到 一 张新表甚至列类的 型、大小和可否为NULL 属性 都没改变。
当表数据比较大时,就会特别慢。
如何优化
理论上,MySQL 可以跳过创建新表的步骤。列的默认值实际上存在表的. frm 文件中,是可以直接修改.frm 文件的。然而MySQL 还没有采用这种优化的方法 ,所有的MODIFY COLUMN 操作都将导致表重建。
可过如下ALTER COLUMN 操作来改变列的默认值
mysql> ALTER TABLE sakila.film
-> ALTER COLUMN rental_duration SET DEFAULT 5;
这个语句会直接修改. frm 文件。所以,这个操作是非常快的。
例: 给表的某列增加一个常量
比如:以给sakila.flim 表的rating 列增加一个常量
SHOW COLUMNS FROM sakila.film LIKE ‘rating’;

rating 增加一个PG-14 的电影分级:
一般做法
ALTER TABLE sakila.film MODIFY COLUMN rating ENUM('G','PG','PG-13','PG-14','R','NC-17') DEFAULT 'G';
表数据量大得情况下,会特别慢,还可能长时间影响对外服务。
优化方案
- 创建一张有相同结构 的空表,并进行需要所的修改(例如增加ENUM 常量) 。
- 执行FLUSH TABLES WITH READ LOCK LOCK。这将会关闭所有正在使用的表 ,并且禁止任何表被打开。
- 交换 .frm 文件.
- 执行 UNLOCK TABLES 来释放第2步得读锁
备份数据
MUST: 一定要备份数据
执行命令创建表、锁表命令
mysql> CREATE TABLE sakila.film_new LIKE sakila.film;
mysql> ALTER TABLE sakila.film_new
-> MODIFY COLUMN rating ENUM('G','PG','PG-13','R','NC-17', 'PG-14')
-> DEFAULT 'G';
mysql> FLUSH TABLES WITH READ LOCK
注意,我们是常量在 列表的末尾增加一个新的值。如果把新增的放值在,中间例如PG-13 之后则导致会已存在经 数据的的含义被改变: 已存在经 的了值将变成PG-14 ,而已存在经 的NC-17 将成为RR,等
交换.frm 文件
接下来用操作系统的命令交换.frm 文件
/var/lib/mysql/sakila# mv film.frm film_tmp.frm
/var/lib/mysql/sakila# mv film_new.frm film. frm
/vaxr/lib/mysql/sakila# mv film_tmp.frm film_new. frm
解锁、查看表字段
mysql> UNLOCK TABLES;
mysql> SHOW COLUMNS FROM sakila.film LIKE 'rating';

删除辅助表
确认没问题删除辅助表
mysql> DROP TABLE sakila.film_new ;
相关文章:
Mysql如何高效ALTER TABL
ALTER TABLE 缺点 MySQL 的ALTER TABLE 操作的性能对大表来说是个大问题。 MySQL MySQL 执行大部分修改表结构操作的方法是用新结构的 创建一个,空表从旧表中查出所有数据插入,新表然后删除旧。表这样操作可能需要花费很长,时间 如内果存不…...
vue3+vite搭建第一个cesium项目详细步骤及环境配置(附源码)
文章目录 1.创建vuevite项目2.安装 Cesium2.1 安装cesium2.2 安装vite-plugin-cesium插件(非必选)2.3 新建组件页面map.vue2.4 加载地图 3.完成效果图 1.创建vuevite项目 打开cmd窗口执行以下命令:cesium-vue-app是你的项目名称 npm create…...
LiteOS增加执行自定义源码
开发过程注意事项: 源码工程路径不能太长 源码工程路径不能有中文 一定要关闭360等杀毒软件,否则编译的打包阶段会出错 增加自定义源码的步骤: 1.创建源码目录 2. 创建源文件 新建myhello目录后,再此目录下再新建源文件myhello_demo.c 3. 编…...
《Nature》文章:ChatGPT帮助我学术写作的三种方式
图片翻译 ** 文章内容** 忏悔时间:我使用生成式人工智能(AI)。尽管在学术界关于聊天机器人是积极力量还是消极力量的争论不休,但我几乎每天都使用这些工具来完善我所写论文中的措辞,并寻求对我被要求评估的工作进行替…...
防火墙安全策略与用户认证综合实验
一、实验拓扑 二、实验需求 1.DMZ区内的服务器,办公区仅能在办公时间内<9:00-18:00>可以访问,生产区的设备全天可以访问 2.办公区不允许访问互联网,办公区和游客区允许访问互联网 3.办公区设备10.0.2.10不充许访问DMZ区的FTP服务器和HT…...
vue学习day05-watch侦听器(监视器)、Vue生命周期和生命周期的四个阶段、、工程化开发和脚手架Vue cli
13、watch侦听器(监视器) (1)作用:监视数据变化,执行一些业务逻辑或异步操作 (2)语法: 1)简写语法——简单数据类型,直接监视 ① Watch:{ 数…...
数字人+展厅互动体验方案:多元化互动方式,拓宽文化文娱新体验
数字化创新已成为推动展厅可持续发展,创造全新消费体验,满足游客多元化需求的关键力量。 “数字人数字互动展厅”可以适应年轻一代的文化传播与多媒体互动新体验趋势,打造新生代潮玩聚集地,促进文化创意传播与互动体验场景创新&a…...
在Spring Boot项目中集成监控与报警
在Spring Boot项目中集成监控与报警 大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 引言 在当今的软件开发中,监控和报警系统是保证系统稳定性和可靠性的重要组成部分。Spring Boot…...
opencv实现目标检测功能----20240704
早在 2017 年 8 月,OpenCV 3.3 正式发布,带来了高度改进的“深度神经网络”(dnn)模块。 该模块支持多种深度学习框架,包括 Caffe、TensorFlow 和 Torch/PyTorch。这次我们使用Opencv深度学习的功能实现目标检测的功能,模型选用MobileNetSSD_deploy.caffemodel。 模型加载…...
音视频解封装demo:使用libmp4v2解封装(demux)出mp4文件中的h264视频数据和aac语音数据
1、README 前言 本demo是使用的mp4v2来将mp4文件解封装得到h264、aac的,目前demo提供的.a静态库文件是在x86_64架构的Ubuntu16.04编译得到的,如果想在其他环境下测试demo,可以自行编译mp4v2并替换相应的库文件(libmp4v2.a&#…...
手撸俄罗斯方块(一)——简单介绍
手撸俄罗斯方块 简单介绍 《俄罗斯方块》(俄语:Тетрис,英语:Tetris),是1980年末期至1990年代初期风靡全世界的电脑游戏,是落下型益智游戏的始祖,电子游戏领域的代表作之一&a…...
构建LangChain应用程序的示例代码:61、如何使用 LangChain 和 LangSmith 优化链
本示例介绍如何使用 LangChain 和 LangSmith 优化链。 设置 我们将为 LangSmith 设置环境变量,并加载相关数据 import osos.environ["LANGCHAIN_PROJECT"] "movie-qa" # 设置 LANGCHAIN_PROJECT 环境变量为 "movie-qa"import pan…...
Android系统通过属性设置来控制log输出的方案
Android系统通过属性设置来控制log输出的方案 背景 项目中经常需要在针对性的模块或者文件,分析问题的时候输出Log,但问题分析完成后,又由于性能问题,需要关闭这些log输出。当前大多数情况下是控制整个系统的log等级来实现&#…...
JavaDoc的最佳实践
文章目录 一、JavaDoc 使用说明1.1 什么是 JavaDoc1.2 文档注释结构1.3 常见的 Javadoc 标签 二、文档最佳实践2.1 注释原则2.2 实际案例 参考资料 一、JavaDoc 使用说明 1.1 什么是 JavaDoc JavaDoc 是一款能根据源代码中的文档注释来产生 HTML 格式的 API 文档的工具。 Jav…...
数字力量助西部职教全面提升——唯众品牌大数据、人工智能系列产品中标甘肃庆阳职院数字经济人才培养基地!
近日,唯众品牌凭借在大数据和人工智能领域深耕多年的技术积累和卓越产品,成功中标庆阳职业技术学院全国一体化算力网络国家枢纽节点数字经济人才培养基地项目,标志着唯众在助力西部职业教育与数字经济融合发展的新征程上迈出了坚实的一步。 …...
Swagger的原理及应用详解(四)
本系列文章简介: 在当今快速发展的软件开发领域,特别是随着微服务架构和前后端分离开发模式的普及,API(Application Programming Interface,应用程序编程接口)的设计与管理变得愈发重要。一个清晰、准确且易于理解的API文档不仅能够提升开发效率,还能促进前后端开发者之…...
Elasticsearch7.10集群搭建
Elasticsearch详细介绍: Elasticsearch 是一个分布式、RESTful 风格的搜索和分析引擎。它的核心基于 Apache Lucene,能够处理海量的数据,并支持实时的全文搜索。以下是关于 Elasticsearch 的详细介绍。 一、基本概念 索引(Index…...
SMU Summer 2024 Contest Round 3
A.Hcode OnlineJudge 先用欧拉筛把质数预处理出来,然后枚举左端点的质数,只需要询问右端点是不是质数并取差值的min就行了 #include<bits/stdc.h> #define endl \n #define mk make_pair #define int long long using namespace std; typedef lon…...
uniapp 封装瀑布流组件
思路: 1.coulumns:需要分成几列 2.如何分布数据 3.计算每列的宽度 4.图片进行高度自适应 <template><view :style"{ margin: boxM }"><view class"flex flex-justify-start bg-red" style"background-colo…...
pd虚拟机去虚拟化是什么意思?pd虚拟机去虚拟化教程 PD虚拟机优化设置
Parallels Desktop for Mac(PD虚拟机)去虚拟化是指在虚拟机(Virtual Machine,简称 VM)中禁用或减少虚拟化层的影响,使其表现更接近于物理机。这种操作通常用于提高虚拟机的性能或解决某些软件兼容性问题。具…...
售价99美元小工具Cricut Joy 2,功能实用但新手引导待改进!
产品初印象这款售价99美元的小工具并不完美,但它的功能和应用程序提供的模板正是用户所需要的。照顾他人、自我批评以及心理健康方面的困扰,让用户很难再像过去那样摆弄和涂鸦,然而Cricut Joy 2却让人心动不已。当有创作的心情时,…...
Seraphine:你的英雄联盟智能游戏伙伴,让每一局游戏都更从容
Seraphine:你的英雄联盟智能游戏伙伴,让每一局游戏都更从容 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否曾在英雄联盟的BP阶段犹豫不决,错过了最佳选择࿱…...
别再只用VLC看片了!手把手教你把它变成家庭流媒体服务器(支持UDP/TCP)
解锁VLC的隐藏技能:打造家庭专属流媒体系统的完整指南 你是否曾为在不同设备间切换观看本地视频而烦恼?每次都要用U盘拷贝或者忍受云盘缓慢的上传下载速度?其实,你电脑上那个熟悉的橙色锥形图标——VLC播放器,远比你想…...
企业上云选型:四家主流云厂商的硬指标对比
在数字化转型进入深水区的2026年,企业IT部门的任务已不再是简单的“资源扩容”,而是如何在保障业务连续性的前提下,实现安全免运维与成本控制的完美平衡。 针对官网、小程序等互联网业务,各大公有云厂商均有成熟方案。但当涉及到…...
不使用库函数,实现 strcpy,strcat,strcmp
文章目录 1、strcpy 原型2、strcmp 原型 1、strcpy 原型 char* strcpy(char* des, const char* source) {char* r des;assert((des ! NULL) && (source ! NULL));while((*r *source)!\0);return des; }可以自行实现: char* myStrcpy(char* dest, char* …...
VIIRS/NPP夜光数据:从数据获取到区域分析的实用指南
1. VIIRS/NPP夜光数据入门指南 第一次接触VIIRS/NPP夜光数据时,我也被各种专业术语和数据产品搞得晕头转向。这种由美国国家海洋和大气管理局(NOAA)提供的夜间灯光遥感数据,已经成为城市发展、能源消耗和经济活动研究的重要数据源…...
Unlock Music:打破音乐平台格式壁垒的终极浏览器解密工具
Unlock Music:打破音乐平台格式壁垒的终极浏览器解密工具 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: ht…...
光刻热点修复技术:提升芯片良率的关键方法
1. 光刻热点修复技术概述在45nm及更先进工艺节点下,光刻热点(Litho hotspot)已成为制约集成电路良率提升的关键因素之一。这类问题区域在传统设计规则检查(DRC)中往往难以被完全捕捉,因为它们本质上是由复杂…...
目标检测:YOLOv12训练自己的数据集,手把手教学一看就会
目录 1. 环境配置 2. 数据集 2.1 网上搜索公开数据集 2.1.1 搜索引擎 2.1.2 Kaggle 2.1.3 Roboflow 2.2 自制数据集 2.2.1 Labelimg安装 2.2.2 Labelimg使用 2.3 数据集转换及划分 2.3.1 数据集VOC格式转yolo格式 2.3.2 数据集划分 3. 训练模型 3.1 创建data.yam…...
告别虚拟机臃肿:用QEMU+OVMF在Ubuntu上快速搭建一个32MB的极简Linux内核调试环境
极简Linux内核调试环境:QEMUOVMF实战指南 每次打开臃肿的虚拟机都要等待漫长的启动时间,看着进度条缓慢爬行,作为开发者的你是否感到效率被无情吞噬?在调试内核模块或研究启动流程时,我们真正需要的只是一个轻量级、即…...
