多语言展示
当前在线:1169今日阅读:39今日分享:10

分库分表后添加字段如何快速实现

今天有网友问我分库分表后添加字段如何快速实现,小编在网上查了些资料,再根据个人的经验总结。希望能帮助到大家。
工具/原料
1

电脑

2

电脑软件

方法/步骤
1

方法一:在分库分表中打开需要编辑的数据。选择要编辑的数据,右键→打开属性表这里需注意,添加字段时,编辑模式是不能打开的。在属性表上【选项】下拉菜单,点击【添加字段】按钮。在弹开的【添加字段】对话框里,设置字段名称,字段类型,字段长度、精度等。5设置完成后,点击确定,字段就添加成功了。

2

方法二:进phpmyadmin选中服务器,选中数据库,选中表,就应该能看见表的结构,也就是好多字段,那个下面第三行,有个添加新字段,在那里添加新字段 1,于表开头,点击添加,字段填写id,后面类型选int,一般id都会在额外里选上auto_increment,当然也可以不选。 sql是 alter table `(这里你要添加的表的名字)` add `id` int not null auto_increment first,先说一下 SQL Server 通过 IDENTITY 来设置 参数有2个,一个是“初始值” 一个是“增量”。 默认情况下 INSERT 语句中,不能对 IDENTITY 的字段进行赋值。 对于 IDENTITY 的列 SQL Server 在 INSERT 的时候,会自动忽略掉。 1> CREATE TABLE test_cr...

3

方法三:能不加字段就不要加, 能不修改字段就不要修改, 能不删除字段就不要删除, 等等为什么要删除字段呢? 如果没事,不要蛋疼的找事。 实际上,我们那次更新失败后, 我们并没有增加那个字段, 然后我们一直运行到今天, 但是后来还是增加了其他字段 2. 增加字段的情况下, 如果可以通过增加一个新的表来增加这个字段, 那么就增加一个新的表, 通过cache 或 程序来实现join 的效果 3. 如果能停机, 并且停机的时间在你容忍范围之内, 数据备份之后停机来做。 如果是主从备份,做这样大的操作的时候,停掉主从备份, 万一你挂了, 备份数据库可以救你。 等到一切安全了, 重启主从备份; 4. 如果上面都不行, 这个字段还是要改,要加, 需要用到下面的方法, 也是扇贝网正在使用的方法;

4

方法四:修改大数据表的方法: 1. 被修改的表 Table A 需要有一个记录时间戳的字段, 这个时间戳就是每次数据更新,都会更新的字段, 这个字段需要有索引,在django里可以使用 auto_now=True 2. 创建一个新的临时表 Table B, 不是tmp_table, 是一个新的表,但是是临时使用的。 这个表和要修改的表拥有一模一样的数据结构, 加上你要修改的部分, 比如增加的字段; 3. 记录下Table A 的索引 4. 删除 Table B 的全部索引 5. 把Table A 的数据全部复制到Table B, 是不是执行 INSERT INTO B(field1, field2) SELECT field1, field2 FROM A? 当然不是, 这么做不还是锁死了Table A 么, 这里的迁移就是一个需要细分的地方,需要写一个脚本, 让程序每次读取比如5000条数据出来, 插入到Table B里面, 因为Table B 是没有索引的, 所以要当心不要使用多进程来做; 如果是多进程, 要确保插入到B的时候是不会有重复数据的; 如果是1000万的数据,每次5000条, 假设这个操作需要500ms, 那么 2000*200ms = 16 分钟。 这只是一个估值, 具体情况和服务器当时的情况有关, 不好细说。 另外, 我们要记录这个迁移开始的时间点,记为t1; 6. 那么这个时候Table A 的数据是不是都进入了Table B 呢, 应当说差不多大部分都进入了, 但5中说, 这大概需要16分钟, 这么长的时间里, 可能有新的数据进入了, 也有可能已有的数据发生了更新, 所以我们要把Table A 中在t1 之后发生变化的数据查找出来, 然后更新到Table B 中, 我们的做法是:

注意事项
1

添加字段时不能打开编辑模式

2

添加字段时,注意字段类型、长度等设置

推荐信息