一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决?

来源:互联网 发布:java模式 编辑:程序博客网 时间:2024/05/17 22:30

alter table dropcolumn score;

alter table addcolunm score int;

可能会很快,但是需要试验,试验不能拿真实的环境来操刀,并且要注意,

这样的操作时无法回滚的,在我的印象中,只有inert updatedeleteDML语句才能回滚,

对于create table,droptable ,alter tableDDL语句是不能回滚。

 

解决方案一,update user set score=0;

解决方案二,假设上面的代码要执行好长时间,超出我们的容忍范围,那我就alter table userdrop column score;alter table user add column score int

 

下面代码实现每年的那个凌晨时刻进行清零,或者使用spring框架集成quartz来实现定时调度。

Runnable runnable=

       new Runnable(){

              public void run(){

                     clearDb();

                     schedule(this,new Date(newDate().getYear()+1,0,0));

              }

       };

 

schedule(runnable,

       new Date(new Date().getYear()+1,0,1));

0 0
原创粉丝点击