在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

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

144次阅读
没有评论

共计 1164 个字符,预计需要花费 3 分钟才能阅读完成。

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

一、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 为原表名

释放锁

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

改进:

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

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

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

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

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-13发表,共计1164字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产成人免费网站 | 欧洲在线观看在线视频吗 | 国产自产一c区 | 久久久久亚洲av无码专区 | 99久久婷婷国产综合亚洲 | 日本特黄特色特爽大片 | 欧美性a爱片 | 国产精品亚洲四区在线观看 | 国产一区二区三区日韩精品 | 久久精品国产亚洲av麻豆长发 | 国产精品久久久久影院免费 | 思思久久99热免费精品6 | 18禁美女裸体无遮挡网站 | 亚洲av无码一区二区二三区软件 | 澳门四虎影院 | 中文字幕成人免费视频 | 午夜不卡无码中文字幕影院 | 免费a级毛片无码a∨蜜芽试看 | 天堂毛片 | 亚洲午夜精品专区国产 | 色翁荡熄又大又硬又粗又动态图 | 蜜臀亚洲av无码精品国产午夜. | 精品国产乱码久久久久久鸭王1 | 国产网站在线 | 欧美人成a视频www | 久久精品网站2019精品 | 欧美人与性动交α欧美精品 | 蜜臀av无码人妻精品 | 久久66热人妻偷产精品9 | 国产精品永久免费 | 国产免费福利视频 | 亚洲欧美人成人让影院 | 亚洲国产五月综合网 | 天码av无码一区二区三区四区 | 国产欧美专区在线观看 | 青青青爽在线视频观看 | 香港一级毛片免费看 | www男人天堂| 视频在线亚洲 | 亚洲涩综合 | 在线午夜限制影片 |