iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据库线上如何修改表结构
  • 646
分享到

MySQL数据库线上如何修改表结构

2024-04-02 19:04:59 646人浏览 八月长安
摘要

本篇内容介绍了“Mysql数据库线上如何修改表结构”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

本篇内容介绍了“Mysql数据库线上如何修改表结构”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、MDL元数据

在修改表结构之前,先来看下可能存在的问题。

1、什么是MDL锁

mysql有一个把锁,叫做MDL元数据锁,当对表修改的时候,会自动给表加上这把锁,也就是不需要自己显式使用。

  • 当对表做增删改查的时候,加的是MDL读锁

  • 当对表结构做变更修改的时候,加的是MDL写锁

读与读之间不互斥,读与写,写与写之间互斥,因此

  • 当有一个线程对表执行增删盖茶的时候,会阻塞掉别的线程对表结构修改的请求

  • 当有一个线程对表结构修改的时候,会阻塞掉别的线程对表增删改查的请求

2、MDL锁的问题

并且MDL一旦上锁之后,只有当前请求的事务提交才会释放,如果是一个长事务,或者是线上数据量很大,修改表结构默认上了MDL写锁,会很耗时一直阻塞掉后边其他请求。

想象一种场景,A(select),B(alter), C(select),D(select).....分别为按照顺序对Mysql同一张表的请求,这些请求会形成一个队列。
当A(select)获取表的MDL读锁之后,就会阻塞掉B(alter),因为B要加的是MDL写锁,B被阻塞掉之后,就会导致后边等待队列中的其他请求都被阻塞掉,最终造成Mysql的可用连接耗尽,请求超时等问题。

二、如何线上修改MySQL表结构

鉴于以上MDL锁,得知对表做alter修改结构很会阻塞掉其他的正常请求,所以修改操作要放在非业务高峰期来做,一般是放到凌晨2-4点。

具体步骤:

  • 对表加读写锁,使得此时表只读、

  • 复制原表的物理结构

  • 修改新表的物理结构,包括增加新字段或者修改其他表结构

  • 把表结构导入新表,数据同步完成,锁住中间表,删除原表

  • 将新表rename为原表名

  • 释放锁

以上方案的问题是,数据量很大的时候,数据都导入需要时间,这个过程中,服务是不可访问的。

改进:

MySQL数据库线上如何修改表结构

新建一张表 A_new,其比原表多了几个字段,通过数据订阅的方式订阅原表A,把线上的表A中的数据同步到这个新建的表A_new中,这个过程会一直持续,并且这个过程中表A是可以增删改查的,总有一个时刻,这两张表的数据是完全同步的,数据上是没有任何差异的,这个时候把原表表名A给修改掉,把新表A_new修改为原表A,这个操作是一个短暂操作,可以瞬间完成,不会有很大影响。
优缺点:

  • 好处是同步的过程不会影响原有的业务正常。

  • 缺点是过程中需要额外一倍的存储空间去存储这个新表,当rename完成之后,可以把老表删掉。

“MySQL数据库线上如何修改表结构”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据库线上如何修改表结构

本文链接: https://www.lsjlt.com/news/74160.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据库线上如何修改表结构
    本篇内容介绍了“MySQL数据库线上如何修改表结构”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • MySQL数据库线上修改表结构的方法
    目录一、MDL元数据锁1、什么是MDL锁2、MDL锁的问题二、如何线上修改MySQL表结构一、MDL元数据锁 在修改表结构之前,先来看下可能存在的问题。 1、什么是MDL锁 MySQ...
    99+
    2022-11-13
  • 怎么修改mysql数据库表结构
    这篇文章主要介绍了怎么修改mysql数据库表结构,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。修改mysql数据库表结构的方法:1、查看表结构;...
    99+
    2022-10-18
  • MySQL数据库修改表结构的方法
    MySQL数据库修改表结构的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!MySQL数据库修改表结构的方法:1、使用a...
    99+
    2022-10-18
  • MySQL在线修改表结构pt-osc
    MySQL在线修改表结构pt-osc    重所周知 MySQL的DDL操作操作是相比比较昂贵的。因为MySQL在修改表期间会阻塞任何读写操作。  ...
    99+
    2022-10-18
  • mysql如何修改表结构
    这篇文章给大家分享的是有关mysql如何修改表结构的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 mysql修改表结构的语句是“ALTER TABLE...
    99+
    2022-10-19
  • mysql笔记--数据库基本增删改查 修改表结构
    数据库基本增删改查 1、 增—添加/插入数据,insert into插入哪张表,那些列,什么值,语句:insert into 表名(列1,列2,列3)values (值1,值2,值3);...
    99+
    2022-10-18
  • Access数据库中怎么修改表结构
    这篇文章给大家介绍Access数据库中怎么修改表结构,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Access数据库中修改表的结构的方法有?修改表的结构可以在两种环境下进行:一种修改环...
    99+
    2022-10-18
  • MySQL如何快速修改表的表结构
    快速修改MySQL某张表的表结构--摘录自《MySQL管理之道》 ALTER TABLE 表名 MODIFY 列名 数据类型; 这个命令可以修改表结构 此外,也可以如下方法修改表结构: 先创建一张表,如下: ...
    99+
    2022-05-16
    MySQL MySQL 表结构 MySQL 修改表结构
  • 数据库基本增删改查与修改表结构
    数据库基本增删改查 1、 增—添加/插入数据 insert into插入哪张表,那些列,什么值,语句:insert into 表名(列1,列2,列3)values (值1,值2...
    99+
    2022-10-18
  • MySQL数据库怎么使用altertable语句来修改表结构
    这篇文章将为大家详细讲解有关MySQL数据库怎么使用altertable语句来修改表结构,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  大家都明白,MySQL数据库常常...
    99+
    2022-10-18
  • Mysql怎么查看表结构、修改和删除数据表
    本篇内容介绍了“Mysql怎么查看表结构、修改和删除数据表”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&...
    99+
    2022-10-18
  • MySQL数据库的表结构和表数据
    这篇文章给大家分享的是有关MySQL数据库的表结构和表数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获。1、前言在功能开发完毕,在本地或者测试环境进行测试时,经常会遇到这种情...
    99+
    2022-10-18
  • sql如何修改表结构
    这篇文章将为大家详细讲解有关sql如何修改表结构,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。          &nb...
    99+
    2022-10-18
  • 应该怎么样去对MySQL数据库的表结构进行修改
    这篇文章给大家分享的是有关应该怎么样去对MySQL数据库的表结构进行修改的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MySQL ALTER TABLE语句ALTER ...
    99+
    2022-10-18
  • php怎么修改数据表的结构和数据
    PHP是一种流行的编程语言,可以进行各种操作,其中包括操作数据库。在本文中,我们将讨论PHP如何修改数据库表。这里采用MySQL作为数据库示例。连接数据库在PHP中,首先需要连接到数据库。可以使用以下代码打开MySQL连接:$db_host...
    99+
    2023-05-14
  • mysql数据库中如何修改表类型
    这篇文章主要介绍mysql数据库中如何修改表类型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 在mysql中,可以利用“alter table”语句和“...
    99+
    2022-10-19
  • mysql系列(十一)——数据库表物理结构修改工具(pt-online-schema-change)
    一、安装...
    99+
    2017-08-25
    mysql系列(十一)——数据库表物理结构修改工具(pt-online-schema-change)
  • mysql如何修改表结构(altertable),多列/多字段
    目录mysql修改表结构(alter table),多列/多字段mysql alter table修改表结构添加多个字段的几个写法分开写多个 alter table合并写在一起总结m...
    99+
    2022-12-21
    mysql修改表结构 mysql alter table mysql修改表alter table
  • 如何实现MySQL中修改表结构的语句?
    如何实现MySQL中修改表结构的语句?MySQL 是一种流行的关系型数据库管理系统(RDBMS),用于存储和管理大量的数据。在实际的开发过程中,经常需要修改数据库表的结构,例如添加、修改、删除列等。在下面的文章中,将详细介绍如何使用 MyS...
    99+
    2023-11-09
    MySQL 修改 表结构
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作