tidb修改字段类型的办法

tidb有很多的限制,比如新增修改和删除字段一次只能执行一条,比如sql语句比如update一次只能执行几万条。比如不能修改字段的类型。

之前我要修改字段类型只能先把tidb的数据先迁移到mysql上,然后在mysql里面的字段类型修改后,再直接覆盖tidb里的表。在开发阶段是可以的,但是在产品上线以后,时刻产生新的数据,如果要保证正确性,只能停止服务器,但是数据量大的时候,迁移数据的速度会非常慢,先迁移到mysql,然后再迁移到tidb,时间耗时太长,对服务器影响太大。怎么样尽量地减少时间,减少对数据库的影响,我开始考虑到这一点。

我发现tidb虽然不能执行修改字段类型的语句,但是可以新增字段,删除字段,修改字段的名称。于是我就想到了办法。

比如一个监控数据表monitordata,有一个字段cycleTime(int),我想改成double类型。那么我就先新增一个字段cycleTime_new,然后利用update语句将cycleTime的数据加到cycleTime_new上,然后删除cycleTime字段,再修改字段名cycleTime_new为cycleTime。

ALTER TABLE `monitordata`
ADD COLUMN `cycleTime_new`  double;
update monitordata 
set cycleTime_new = cycleTime
where cycleTime_new is null
limit 50000;
commit;
update monitordata 
set cycleTime_new = cycleTime
where cycleTime_new is null
limit 50000;
commit;
update monitordata 
set cycleTime_new = cycleTime
where cycleTime_new is null
limit 50000;
commit;
.......
#重复到所有数据处理完毕
ALTER TABLE `monitordata`
DROP COLUMN `cycleTime`;
ALTER TABLE `monitordata`
CHANGE COLUMN `cycleTime_new` `cycleTime`  double NULL DEFAULT NULL;

其中update字段数据的时间比较长,但是执行的时候并不会影响到生产环境的数据。当我把所有数据处理完毕后,我只要短时间内停一下服务器,然后再执行一次update语句,将最近生成的数据处理掉,然后再删除修改字段。对数据库的影响降到了最低

### Flowable 工作流引擎兼容的国产数据库 #### 金仓数据库 为了使 Flowable 兼容金仓数据库,需执行一系列操作。这包括增加特定于金仓数据库的 jar 包 SQL 脚本、调整源代码以适应新环境的要求、更新 Liquibase 配置以便正确处理模式变更以及相应地修改配置文件来指定新的数据源设置[^1]。 #### 达梦数据库 针对达梦数据库的支持,主要措施涉及引入该数据库特有的 JDBC 驱动程序至项目依赖中。此过程不仅适用于达梦数据库,同样可以作为模板应用于其他类型的国内数据库(如人大金仓),只需注意不同数据库间可能存在的语法差异或特性上的细微差别即可完成移植工作[^2][^4]。 #### TiDB 数据库 当考虑将 Flowable 移植到 TiDB 这样的分布式关系型数据库上时,尽管遇到了一些挑战并找到了临时解决方案,但仍然存在优化空间。开发者们分享了自己遇到的问题及其解决办法,并邀请社区成员提供更优方案建议[^3]。 #### Gaussdb 数据库 对于 Gaussdb 的集成,则特别提到了对 `liquibase.datatype.core.BooleanType` 类进行了扩展或重写,从而实现了 Gaussdb 中 bit 字段同 Java Boolean 类型之间的映射转换功能[^5]。 综上所述,通过适当的技术手段和定制化开发,Flowable 可以成功对接多种主流国产数据库产品,满足本地化应用需求的同时也促进了软件生态系统的多样性发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值