首页 > 其他分享 >100G大表Alter更改表结构技术方案探讨

100G大表Alter更改表结构技术方案探讨

时间:2023-12-06 21:31:50浏览次数:40  
标签:varchar 100G XXX new where Alter 500 大表

JAVA研发需求:

需要对A表的XXX字段扩容至varchar(500)


目前的现状:

线上A表有100G+的数据,如果直接modify XXX varchar(500),会锁全表,即使用pt-osc工具凌晨搞,预估一宿加不完,并且从库会出现大面积延迟,读取的数据将不准确。

https://dev.mysql.com/doc/refman/8.0/en/innodb-online-ddl-operations.html

100G大表Alter更改表结构技术方案探讨_JAVA


DBA提出的技术方案:

1)生成一张新表A_new,对A_new表进行modify XXX varchar(500),新的数据直接insert到A_new表里。

2)关联老表用union all。例如

select * from A where ......

union all

select * from A_new where .......

3)由于老表的数据是死的,不会产生update变化,所以用该方案实施的代价是最小的,只需业务更改一下业务逻辑即可。

4)沟通确定后,落地实施。




标签:varchar,100G,XXX,new,where,Alter,500,大表
From: https://blog.51cto.com/hcymysql/8710795

相关文章

  • MySQL大表设计怎么做?
    MySQL是一种常用的关系型数据库管理系统,它在处理大表时需要特别注意设计和优化。下面将详细介绍MySQL大表的设计原则和优化策略。1.数据库设计数据库范式化:将数据按照规范的关系模型进行拆分和组织,避免数据冗余和更新异常。合理选择主键:选择适合业务需求的主键类型,并确保主键......
  • MySQL大表设计
    存储大规模数据集需要仔细设计数据库模式和索引,以便能够高效地支持各种查询操作。在面对数亿条数据,每条数据包含数百个字段的情况下,以下是我能想到的在设计数据库的时候需要注意的内容,不足之处欢迎各位在评论区批评指正:1.数据库设计表结构设计垂直分割:将大的表分割成多个相......
  • 执行完又报这个错误ALTER TABLE sys_export_file_msg MODIFY EXPORT_PARAMS CLOB > OR
    报这个错误ALTERTABLEsys_export_file_msgMODIFYEXPORT_PARAMSCLOB>ORA-22858:invalidalterationofdatatype在Oracle中,你不能直接将列的数据类型从非LOB类型更改为LOB类型,因为这样的操作会导致数据的重建,可能会造成数据丢失。如果你需要将一个非LOB类型的列更改为CLOB类......
  • CF1879C Make it Alternating
    传送门设\(f_{i,0}\)表示将\([1,i]\)位变成以\(0\)结尾的字符串的最小步数。\(f_{i,1}\)表示将\([1,i]\)位变成以\(1\)结尾的字符串的最小步数。\(f_{i,2}\)表示将\([1,i]\)位变成空字符串的最小步数。转移的时候分类讨论一下第\(i\)位的选取与否,注意要求方案数,所以要注意分讨......
  • [20231023]备库与alter system flush buffer_cache.txt
    [20231023]备库与altersystemflushbuffer_cache.txt--//测试遇到的问题,在备库执行altersystemflushbuffer_cache;刷新数据缓存命令无效.--//通过例子验证:1.环境:[email protected]:1521/orcl>@[email protected]:1521/orcl>@pr==============================P......
  • 28、Flink 的SQL之DROP 、ALTER 、INSERT 、ANALYZE 语句
    文章目录Flink系列文章一、DROP1、DROPCATALOG2、DROPDATABASE3、DROPTABLE4、DROPVIEW5、DROPFUNCTION6、droptable示例二、alter1、ALTERDATABASE2、ALTERTABLE1)、建表2)、ADD1、增加单列示例2、增加watermark列3)、MODIFY1、修改列2、修改水印4)、DROP5)、RENAME6)、SET7)、......
  • 无涯教程-Clojure - alter函数
    此函数用于安全地更改引用类型的值,它在线程中运行,该线程不能被另一个进程访问,这就是为什么该命令始终需要与"dosync"方法相关联的原因。其次,要更改引用类型的值,需要调用一个函数以对该值进行必要的更改。alter-语法(alterrefnamefun)参数   - 'refname'是保存参......
  • update-alternatives用法
    sudoupdate-alternatives--listgo现实go有哪些替换版本sudoupdate-alternatives--configgo选择特定版本gosudoupdate-alternatives--install/usr/bin/gogo/usr/local/go/bin/go1 --slave/usr/bin/gofmtgofmt/usr/local/go/bin/gofmt添加go的新配置,后跟子配......
  • You must reset your password using ALTER USER statement before executing this st
    安装mysql-5.7.32数据库时,初次登陆MySQL,执行如下命令获取临时密码,/var/log/mysqld.log为my.cnf中log-error配置项的内容:grep'temporarypassword'/var/log/mysqld.log获取临时密码:!.IRoNewC7xq,执行结果如下: 初次使用临时密码登录MySQL,查看MySQL数据库时......
  • centos多版本jdk通过alternatives
    一、下载Linux版的JDK到本地本文以jdk-8u341-linux-x64.tar.gz、jdk-11.0.16_linux-x64_bin.tar.gz为例。二、创建Java目录安装  1.mkdir/usr/java/2.解压JDK到Java目录tar-zxvfjdk-8u341-linux-x64.tar.gz-C/usr/java/tar-zxvfjdk-11.0.1......