数据的更新

95 阅读2分钟
CREATE TABLE `currency_chain` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL DEFAULT '' COMMENT '交易所name',
  `market_id` int(11) NOT NULL DEFAULT '0' COMMENT 'j交易所id',
  `contract_address` varchar(255) DEFAULT NULL COMMENT '智能合约地址',
  `theday` int(11) NOT NULL DEFAULT '0' COMMENT '以天为时间',
  `level_id` int(11) DEFAULT '1' COMMENT '未更新的频次级别',
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除 1:删除  0:不删除',
  `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='去中心化交易所的智能合约地址';






 1、新增的数据 采用redis的顺序执行插入数据库   theday入库的是当前时间  level_id 是默认就是1

 2、更新的数据 每天执行小于当天的数据 进行更新,扔到topic里面

 3、消费到数据以后,计算出当前数据的锁仓额,拿数据库的与当前的进行对比,如果当前语句更新了 那就不操作他的级别 如果没有更新的话  就把级别自增+1,就是他下次的执行时间,比如1没有更新,自增+1, 那他就是两天以后再执行,如果两天以后执行了。级别改为1,如果还没有执行继续自增+1,得出他下次的执行时间。


①问题:比如30万数据,为0的有20万,他们每次执行的时间也是一样的,怎么可以把他们拆开
然后比如说你为0 以后不更新次数超过10次以后,随机给你(10+2)*2  取(10,24)中间随机取更新的天数
②比如你有10次没更新,突然更新了一次:  level_id:10
锁仓额不为0,就减2天在执行  如果后续每次都执行的话 每次减2,小于1的时候  默认取1
③每天更新的次数能否控制在5万左右,
(级别+2)*2 取随机数 来决定更新的频次

(级别-2)*2  取随机数


(3