公司有些表数据量特别大,大概 3000w,现在需要增加一列,如果直接使用 alter,需要 10min 才能完成,这是完全不能接受的。所以除了新建表和停机,还有什么好的方法?
PS:数据库使用的事 MySQL 。
公司有些表数据量特别大,大概 3000w,现在需要增加一列,如果直接使用 alter,需要 10min 才能完成,这是完全不能接受的。所以除了新建表和停机,还有什么好的方法?
PS:数据库使用的事 MySQL 。
|
clfOct 22, 2020
1
读写频繁的话主从切换。
读写频率一般的话可以考虑一下 pt-osc,gh-ost 这两个工具增加字段。 最新的 MYSQL8 我记得是可以实现秒级添加字段。 |
|
qiayueOct 22, 2020
2
加列是一个很频繁的操作吗?
如果几个月一次的话,1 小时也可以接受。 |
|
skymeiOct 22, 2020
5
同样有疑问,蹭个贴
|
|
x4400177Oct 22, 2020
6
停服
|
|
CrazyEightOct 22, 2020
7
高性能 MySQL 讲到过:
( 1 )不想担风险:在一台不提供服务的机器完成新表的数据同步,再切换机器。 ( 2 )锁住表,拷贝.frm 文件并做出对应修改,再用新的.frm 文件替换掉旧的.frm 文件。有风险。 |
|
redteaOct 22, 2020 via iPhone
9
借此机会分表吧,500 万就该分了。
|
|
CODEWEAOct 22, 2020
10
原表叫 a,复制一个表叫 b,然后给这个表 b 增加列,最后补全表 b 数据
|
|
CODEWEAOct 22, 2020
11
其实就是空间换时间
|