mysql 某表 1200w 行数据, 29 个字段,想新增一个字段,是否可行? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
deepmindlab
V2EX    程序员

mysql 某表 1200w 行数据, 29 个字段,想新增一个字段,是否可行?

  •  
  •   deepmindlab 2019-12-25 19:46:06 +08:00 5433 次点击
    这是一个创建于 2124 天前的主题,其中的信息可能已经有所发展或是发生改变。

    mysql 某表 1200w 行数据,29 个字段,想新增一个字段,是否可行?

    19 条回复    2019-12-26 15:20:33 +08:00
    guijianshi01
        1
    guijianshi01  
       2019-12-25 19:53:57 +08:00
    MySQL 版本多少,5.6 以后和以前两码事
    ben1024
        2
    ben1024  
       2019-12-25 19:54:18 +08:00
    可行,先增加一个无默认值的字段,在进行赋值。
    有条件先锁表一下
    menduo
        3
    menduo  
       2019-12-25 19:54:56 +08:00
    可以啊,有什么不可以?
    ksedz
        4
    ksedz  
       2019-12-25 20:05:53 +08:00
    使用 pt-online-schema-change
    deepmindlab
        5
    deepmindlab  
    OP
       2019-12-25 20:14:19 +08:00
    看了下,我司居然用的 MariaDB……
    mysql> select version();
    +-----------------+
    | version() |
    +-----------------+
    | 10.0.24-MariaDB |
    +-----------------+
    1 row in set (0.00 sec)
    deepmindlab
        6
    deepmindlab  
    OP
       2019-12-25 20:16:20 +08:00
    @menduo 主要怕在执行过程中,性能下降,影响现有业务。
    deepmindlab
        7
    deepmindlab  
    OP
       2019-12-25 20:16:40 +08:00
    @guijianshi01 10.0.24-MariaDB
    sghcel
        8
    sghcel  
       2019-12-25 23:56:16 +08:00 via Android
    主要的问题是要上表元数据锁,期间的阻塞所有读写请求
    haishiwuyuehao
        9
    haishiwuyuehao  
       2019-12-26 01:07:14 +08:00   3
    给楼主参考下,我有次是这样处理数据的:
    copy TableA -> TableB (得到)
    TableB 完成所有操作

    TableA 重命名为 TableC
    TableB 重命名为 TableA

    读取 TableA 大于某个点的数据(时间,唯一 ID 等)写入 TableB。完成数据补充

    讲白了就是用张中间表进行操作数据。然后把中间表重命名为原始表,再把原始表的数据进行补充完整。

    表命名基本上不消耗时间,对业务基本上无影响。

    如果你担心影响线上数据库,也可以进行表同步到其他环境,完成操作再弄数据。
    xcstream
        10
    xcstream  
       2019-12-26 08:55:48 +08:00
    1200w 不是很大找个晚上随便加一下就可以了
    markgor
        11
    markgor  
       2019-12-26 09:09:28 +08:00
    工具:pt-online-schema-change
    手:
    源表架去新表;
    新表加字段;
    源表加器(插入更新除)同步到新;
    源表到新。
    PonysDad
        12
    PonysDad  
       2019-12-26 09:36:55 +08:00 via iPhone
    按 9 楼操作
    securityCoding
        13
    securityCoding  
       2019-12-26 09:37:16 +08:00
    增加临时表吧,不要直接在原表上面干
    optional
        14
    optional  
       2019-12-26 10:10:32 +08:00
    不带默认值和 not null, 1200w 也就几秒钟吧
    leorealman
        15
    leorealman  
       2019-12-26 10:25:48 +08:00
    1200w 而已,在线直接梭哈.
    Kymair
        16
    Kymair  
       2019-12-26 12:07:33 +08:00
    pt-online-schema-change 用的触发器,会对原库性能有一定影响(同步调用)

    推荐 GitHub 出品的 gh-ost 是基于 binlog 的
    https://github.com/github/gh-ost
    deepmindlab
        17
    deepmindlab  
    OP
       2019-12-26 14:01:49 +08:00
    主要是新增的同时插入默认值
    dai875939260
        18
    dai875939260  
       2019-12-26 14:25:09 +08:00
    这版本没啥好办法。新的版本好像会比较快 https://mariadb.com/kb/en/instant-add-column-for-innodb/,https://yq.aliyun.com/articles/670691 快速加列
    yincrow
        19
    yincrow  
       2019-12-26 15:20:33 +08:00
    1200w 而已,我司百亿条记录的表,加个索引也就是 10 个小时
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2547 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 02:31 PVG 10:31 LAX 19:31 JFK 22:31
    Do have faith in what yo're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86