MySQL大数据表增加字段、索引实现

2023-10-29

最近遇到的一个问题,需要在一张1800万数据量的表中添加加一个字段并添加索引,但是直接添加会导致mysql崩溃或者锁表时间太长影响用户操作,所以需要利用其他的方法进行添加,这篇文章主要给大家介绍了MySQL中大数据表增加字段,增加索引的实现过程,需要的朋友可以参考借鉴。

普通的添加字段sql

ALTER TABLE `table_name`
ADD COLUMN `num`  int(10) NOT NULL DEFAULT 0 AFTER `addtime`;

普通的添加索引sql

ALTER TABLE `table_name` ADD INDEX `num` (`num`) ;

但是线上的一张表如果数据量很大呢,执行加字段操作就会锁表,这个过程可能需要很长时间甚至导致服务崩溃,那么这样操作就很有风险了。

在网上查找的给 MySQL 大表加字段的思路如下:

① 创建一个临时的新表,首先复制旧表的结构(包含索引)

② 给新表加上新增的字段

③ 把旧表的数据复制过来

④ 删除旧表,重命名新表的名字为旧表的名字

实现过程大概就是这样,下面我会附带我实现的sql:

① 创建一个临时的新表,首先复制旧表的结构(包含索引)

create table new_table like old_table;

② 给新表加上新增的字段 增加索引

ALTER TABLE `table_name`
ADD COLUMN `num`  int(10) NOT NULL DEFAULT 0 AFTER `addtime`;

ALTER TABLE `table_name` ADD INDEX `num` (`num`) ;

③ 把旧表的数据复制过来

insert into new_table(id,name,content,addtime) select id,name,content,addtime from old_table;

注意:执行这步的时候,可能这个过程也需要时间,这个时候有新的数据进来,所以原来的表如果有字段记录了数据的写入时间就最好了,可以找到执行这一步操作之后的数据,并重复导入到新表,直到数据差异很小。不过还是会可能损失极少量的数据。所以,如果表的数据特别大,同时又要保证数据完整,最好停机操作。

我操作的时候是选取的一个低峰期时间操作的,减少数据差距。

④ 旧表的名字修改为别的名,重命名新表的名字为旧表的名字

留一个备用表,可以等新表完全没问题再删除

总结:

一般情况下,十几万的数据量,可以直接进行加字段操作。因为我这个表数据量太大所以需要其他方法操作。以上就是关于在MySQL大表中加字段加索引的实现思路和步骤。

参考地址:http://www.jb51.net/article/103692.htm

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL大数据表增加字段、索引实现 的相关文章

  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • SQL 查询按字母顺序对除一个之外的所有结果进行排序?

    我有一个小问题 我正在使用 SQL 数据库的结果填充选择标记 我想要的是最后一个添加为顶部条目 其余条目按字母顺序排序 所以它会返回 developerID developerName 40 ZZZ Dev 39 A Dev 38 Be N
  • Rails 3 按字段排序和最后

    您好 我对 Rails 3 2 和订购有疑问 当想要按字段对集合进行排序时 调用时 last ActiveRecord行为怪异 gt gt User order FIELD id 1 User Load 0 4ms SELECT users
  • 使用 PHP 和 MySQL 的服务器端事件

    我正在使用 PHP 和 MySQL 构建一个 非常基本的 应用程序 该应用程序的目的是在网页上显示 实时 数据交易 这些交易来自于transactionsMySQL 数据库中的表 到目前为止 我可以在网页上检索并显示数据 不过我期待看到数据
  • 如何为 MySQL 和 Postgres 编写不区分大小写的查询?

    我在本地运行 MySQL 数据库进行开发 但部署到使用 Postgres 的 Heroku Heroku 处理几乎所有事情 但我不区分大小写的 Like 语句变得区分大小写 我可以使用 iLike 语句 但我的本地 MySQL 数据库无法处
  • 在 ASP.NET MVC 中使用 MySQL 的 AccountController

    在 Visual Studio 中创建默认的 ASP NET MVC 项目会设置一个可以在其中注册用户的基本项目 我将如何继续更改它以使用 MySQL 服务器而不是 SQLServer 现在可以使用了 安装最新的 Connector NET
  • 使用另一个表中的数据查找并替换 MySQL 中的字符串

    我有两个 MySQL 表 我想使用另一个表中的数据查找和替换一个表中的文本字符串 Table texts messages thx guys i think u r great thx again u rock Table dictiona
  • MySql如何通过过滤多列来限制多个数字?

    我想从数据库中获取 4 个不同类别的 50 个问题 我想要 4 个不同类别中每个类别的不同数量的问题 我的结果集必须包含第一类 12 个问题 第二类 20 个问题 第三类 10 个问题和第四类 8 个问题 我的问题表中总共有 50 个问题
  • 使用 pip3 安装 mysqlclient 时遇到问题

    我正在尝试使用 Django 设置 python 3 6 环境 安装说明说我应该安装 mysqlclient 才能连接到 mySQL 我明白了 dennis django sudo H pip3 install mysqlclient Co
  • WooCommerce:在数据库中查找产品

    我正在使用 WooCommerce 创建一个网站 我想根据用户在主页搜索表单中输入的邮政编码来限制用户可用的产品 为了能够实现这一目标 我必须在 phpMyAdmin 的数据库中指定每个产品的条件 但我似乎找不到它 有谁知道 phpmyAd
  • MySQL 错误 1290 (HY000) --secure-file-priv 选项

    我试图在我的脚本中使用以下代码将 MySQL 脚本的结果写入文本文件 SELECT p title p content c name FROM post p LEFT JOIN category c ON p category id c i
  • MySQL:你能指定一个随机限制吗?

    有没有办法在 SQL MySQL 中随机化限制数字 我希望能够做的是在查询中获取随机数量的结果以在插入子查询中使用 而无需任何服务器端脚本 我希望能够作为假设说明运行的查询是 SELECT id FROM users ORDER BY RA
  • Rails 多租户架构,限制多个租户的访问范围

    目前我们有一个单租户数据库架构 MySQL 运行着超过 100 个数据库 我们使用 Apartment gem 切换子域上的数据库连接 一切都很顺利 然而 我们现在需要创建所谓的 伞 客户端 它可以访问一组现有客户端的所有数据 我不认为这对
  • 如何在 WP_Query 中按日期排序?

    我已经尝试过这种方式但是orderby and order不适用于 WP Query 类 posts new WP Query array post type gt block code orderby gt post date order
  • 如何在 Laravel 中编写联合查询?

    我正在使用 laravel 5 0 并且我有 mysql 查询 SELECT surat masuk id surat surat masuk nomor surat FROM surat masuk WHERE EXISTS SELECT
  • PDO fetch() 失败时会抛出异常吗?

    有没有方法PDO语句 fetch http php net manual en pdostatement fetch php如果 PDO 错误报告系统设置为抛出异常 则在失败时抛出异常 例如 如果我设置 PDO ATTR ERRMODE g
  • 从数据库生成 XML 时出现 PHP 编码错误 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试获取一个简单的 PHP 服
  • MySQL“选择更新”行为

    根据 MySql 文档 MySql 支持多粒度锁定 MGL case 1 开放航站楼 1 连接到mysql mysql gt start transaction Query OK 0 rows affected 0 00 sec mysql
  • php 崩溃后 mysql 表被锁定

    我有一个 MySQL DB 和一个 innoDB 表 我有一个 php 页面 用于连接 锁定表 进行一些更新 然后解锁表 PHP 页面通过 wamp 与 apache 一起提供 php页面将文件上传到数据库 我决定通过上传一个大小大于分配给
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin

随机推荐

  • 2023年Flutter淡出视野,是正在被悄悄放弃吗?

    前言 Flutter 完全没有被放弃的意思 相反Google还不断的更新 年年在进行优化迭代 就在十天前还更新到了3 7 什么是Flutter Flutter 是谷歌于 2017 年创建的用户界面工具包 它是一个开源框架 提供完整的小部件
  • unity代码创建mesh

    简介 Introduction 这个教程将让你学会如何创建一个星型控件以及如何制作这个控件的自定义编辑器 你将学会 动态的建立Mesh 使用一个嵌套类 建立一个自定义编辑器 使用SerializedObject 支持所见即所得 对Undo
  • 软件测试·同行评审

    在软件测试中 同行评审是用来检验软件开发 软件评测各阶段的工作是否齐全 规范 各阶段产品是否达到了规定的技术要求和质量要求 以决定是否可以转入下一阶段的工作 软件评审是为了确保软件开发项目的顺利进行而必须进行的工作 往往同行评审时由5人以上
  • restFUl做修改的时候

    restFUl做修改的时候 今天写修改突然想用restful风格 当我使用时 来到controller 并且跳转视图解析器 来到这个页面后 他的路径也就是update id script这时候就会把 识别成去掉 id 今天写修改突然想用re
  • ODOO12 自定义销售报价单样式

    1 以管理员登录系统 2 点击销售图标 进入销售管理系统 3 点击咱们开干呗图标 完善公司数据 4 设置公司数据后 点击应用按钮保存 5 点击定制按钮 自定义报价单模板 6 选择报价单模板 设置公司口号 和页脚后 点击应用按钮 7 点击确认
  • HTTP服务器项目详解

    HTTP 服务器项目 整体学习完HTTP 这个应用层协议之后 心血来潮 在老师和学长的帮助下 更多的是在百度的帮助下 算是顺利的完成了项目吧 功能 收到 TCP IP 协议栈发送过来的数据并对这些数据进行解析 得到有用的信息 然后对请求做出
  • python爬虫可以用来做什么?

    1 收集数据 python爬虫程序可用于收集数据 这也是最直接和最常用的方法 由于爬虫程序是一个程序 程序运行得非常快 不会因为重复的事情而感到疲倦 因此使用爬虫程序获取大量数据变得非常简单和快速 由于99 以上的网站是基于模板开发的 使用
  • 关于微信小程序上传,在微信公众平台

    2019 05 16 小程序小白入门 最开始的时候 我不知道该如何上传自己的代码 打开微信开发平台 找到 工具 选项 再点击 上传 就好了 找到 工具 选项 点击 上传 然后在微信公众微信公众平台 小程序中 我找不到上传的代码 线上版本 审
  • oracle用户行为记录,用户行为分析-埋点实时数仓实践(附用户关联源码)

    一 概述 埋点采集 用户行为分析 实时数仓 IdMapping 此文重点讲述埋点的数据模型 数据格式 数据实时采集 加工 存储及用户关联 关于用户行为分析的概念 意义以及埋点相关的东西此文不作赘述 二 数据模型 业界比较流行的事件 用户模型
  • PhpStorm 配置在浏览器中打开PHP文件

    在phpstrom中用浏览器总是404 NOT FOUND 看了下浏览器地址不对 估摸着是配置问题 看了别人的总是不对 最后把路径全指向文件 现在就行了 添加Apache设置Type类型如图 文件夹地址则为Apache安装路径 因为我这里p
  • 数学建模--Subplot绘图的Python实现

    目录 1 Subplot函数简介 2 Subplot绘图范例1 绘制规则子图 3 Subplot绘图范例2 绘制不规则子图 4 Subplot绘图范例3 gridspec辅助实战1 5 Subplot绘图范例4 gridspec辅助实战2
  • 互联网日报

    今日看点 华为首款台式显示器登陆海外 23 8英寸售价约1361元 小米高管 今年相机部将超2000人 自研芯片会持续迭代 腾讯视频宣布VIP会员4月10日起涨价 月卡将调至30元 国产疫苗迈向全球 我国新冠疫苗首次获得欧盟GMP认证 我国
  • 实习生--该不该努力下去?又要怎么努力...

    毕业 就像一个大大的句号 从此 我们告别了一段纯真的青春 一段年少轻狂的岁月 一个充满幻想的时代 纷纷走向了社会 刚毕业的时候 作为职场新人 我们都拿着接近的薪水 干着相似的事情 大家都过得差不多 然而三到五年过去了 渐渐大家的差距就出来了
  • Siebel Task UI的功能和优点

    1 Siebel Task UI的功能 1 以逐步的方式指导用户完成工作任务 2 支持通过工作任务的向前和向后导航 3 允许用户暂停和恢复作业任务 2 Siebel Task UI的优点 1 通过多个屏幕和视图提供直接的向前和向后导航 2
  • VS恢复默认设置方法

    1 选择 工具 2 在工具菜单中选择 visual studio命令提示 3 弹出一个命令提示符窗口 在窗口中输入devenv resetsettings 回车即可
  • 生成universal link以及解决“由于应用universal link校验不通过,无法完成微信登录”

    ios app使用微信登录现在都需要填写一个universal link 本文介绍1 怎么生成universal link 2 提示错误时怎么检查 生成universal link 准备工作 需要有可以使用https访问的网址 网站需要通过
  • 调试osgEarth(十二)rex地理信息引擎的四梁八柱

    感谢 hankern 学习链接在https blog csdn net hankern article details 84091841 我感觉这里是重点了 直接截图 本来想继续调试下去 发现博主的第十三开始逐个调试的 乐得清闲了 在第十三
  • Cocos2d-x学习(二十四):vs2010使用vld检测内存泄露

    cocos2d x不仅可以做到跨平台运行 还可以做到跨平台编译调试 当然只是编译对应平台下的应用了 众所周知 cocos2d x是用c 编写的 而c 中最让人头疼的莫过于指针和内存泄露的问题 在windows下 cocos2d x支持在vs
  • 注意进行UE4的大气系统(未完成)

    有几个atmoshphere的 h和 cpp和shader 注意看下
  • MySQL大数据表增加字段、索引实现

    最近遇到的一个问题 需要在一张1800万数据量的表中添加加一个字段并添加索引 但是直接添加会导致mysql崩溃或者锁表时间太长影响用户操作 所以需要利用其他的方法进行添加 这篇文章主要给大家介绍了MySQL中大数据表增加字段 增加索引的实现