系统id迁移

最近一段时间原平铝厂的系统发生id重复事件,起因是负载均衡造成的。查找id server 的时候,无意间发现了twitter的id生成器。决定将系统改造一版。

一路走来感觉很艰辛,但是值得了。主表t_pm一万条,级联表t_pm_item十万条。

优化前:

select * from t_pm_1 t left OUTER join t_pm_item_1 tpi on t.kid=tpi.pm_id where t.pm_name like '%a%' limit 501,200;

200 rows in set (1.17 sec)

优化后:

200 rows in set (0.56 sec)

多次执行,时间偏差不大。查询速度提升给力,效果可观,值了!

下面说具体的ID迁移过程:

1.备份库.同时将数据导出 sql.txt

java写个函数:提取sql.txt所有的uuid,替换为newid。

记录替换过程,old_id <--> new_id 替换表。

将sql.txt导入数据库, 记录为新库 ndb .

2.修改java model类

*****特别注意****:将主键、链接键由 uuid String 改为 Long

*****特别注意****:区分model类型: 日期全部用 long , id方式全部为 Long

3.再写一个java函数,读取所有model long类型数据,逐个修改表结构

alter table @table change `@column` `@column` bigint

4.java json 方式向网页发送的 newid 太长 ,18位, js无法识别

需要在 转换json 的时候批量替换 long类型为string类型

5.最后是系统的全流程测试。

需要迁移的伙伴私聊我qq 398479251 发代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值