ps:关于电商订单这块,订单表的设计应该是主表是保留订单相关属性,比如订单id,创建时间等等,客户信息,地址信息,物流信息等单独建表,形成 one-many,订单操作完,可以归档数据。所以说我们公司现在的表结构设计就是他妈的操蛋!
定时器使用注解:@Scheduled(cron = "0 0/1 * * * ?") //每隔一分钟执行一次
今天看到同事写的分表操作,先暂时记录下一些东西,后期会陆续补充。
/** * * 方法描述:定时执行订单超过24小时,自动将订单表的状态改为取消 * 创建时间:2015-5-26 下午7:51:26 */ @Scheduled(cron = "0 0/10 * * * ?") public void AutoModifyOrderStatusToCancel() { //调用定时执行订单超过24小时,自动将订单表的状态改为取消service this.orderTimeService.AutoModifyOrderStatusToCancel(); }
<select id="selectAutoCancelOrderId" resultMap="BaseResultMap"> SELECT boc.ORDER_ID, #{_parameter} AS tableNum <if test="_parameter==-1"> FROM BIZ_ORDER boc </if> <if test="_parameter!=-1"> FROM BIZ_ORDER_${_parameter} boc </if> WHERE NOW()-INTERVAL 24 hour>ADD_DATE AND ORDER_STATUS=1 </select>
/** * * 方法描述:自动执行更新超过24小时订单状态改为取消 * 创建时间:2015-5-26 下午7:36:39 */ public void AutoModifyOrderStatusToCancel(){ //根据物理分表,循环更新每一张表中的订单状态 for(int tableNum=-1;tableNum<10;tableNum++){ List<OrderTimerVO> orderList=this.baseDao.selectList("selectAutoCancelOrderId",tableNum, OrderTimerVO.class); //自动执行更新超过24小时订单状态改为取消 if(orderList.size()>0){ if(tableNum==-1){ int result=this.baseDao.update("updateOrderStatusToCancelId",orderList,OrderTimerVO.class); } else if(tableNum==0){ int result=this.baseDao.update("updateOrderStatusToCancelId0",orderList,OrderTimerVO.class); } else if(tableNum==1){ int result=this.baseDao.update("updateOrderStatusToCancelId1",orderList,OrderTimerVO.class); } else if(tableNum==2){ int result=this.baseDao.update("updateOrderStatusToCancelId2",orderList,OrderTimerVO.class); } else if(tableNum==3){ int result=this.baseDao.update("updateOrderStatusToCancelId3",orderList,OrderTimerVO.class); } else if(tableNum==4){ int result=this.baseDao.update("updateOrderStatusToCancelId4",orderList,OrderTimerVO.class); } else if(tableNum==5){ int result=this.baseDao.update("updateOrderStatusToCancelId5",orderList,OrderTimerVO.class); } else if(tableNum==6){ int result=this.baseDao.update("updateOrderStatusToCancelId6",orderList,OrderTimerVO.class); } else if(tableNum==7){ int result=this.baseDao.update("updateOrderStatusToCancelId7",orderList,OrderTimerVO.class); } else if(tableNum==8){ int result=this.baseDao.update("updateOrderStatusToCancelId8",orderList,OrderTimerVO.class); } else if(tableNum==9){ int result=this.baseDao.update("updateOrderStatusToCancelId9",orderList,OrderTimerVO.class); } } } }
相关推荐
PHP操作mysql数据库分表的方法_.docx
其中有每个命令的使用说明与注释。并增加了清理数据的方式。以及导入输入的注意事项
数据库分库分表 数据库分库分表 数据库分库分表
对学生access数据库大作业分数进行统计
Postgrsql数据库分表升级方案,以具体项目为例,详细阐述。
分表是个目前算是比较炒的比较流行的概念,特别是在大负载的情况下,分表是一个良好分散数据库压力的好方法。 首先要了解为什么要分表,分表的好处是什么。我们先来大概了解以下一个数据库执行SQL的过程: 接收到...
1、shardingsphere 并不直接支持达梦数据库,需要实现部分接口逻辑。 2、本demo并不完全支持达梦sql 3、包里面含有test demo可以直接测试 4、感谢shardingsphere 团队。 5、具体如何实现的 请查看我的博文 ...
- 很简单,网上很多关于分表的都是含糊其辞,没有任何详细的,通用的,既然没有,那么我写一个出来吧。 - 主要目的 - 产品上线以后,数据量越来越大,当一个表有几十万上百万条记录的时候,是时候考虑分表了。...
一、先说一下为什么要分表: 当一张的数据达到几百万时,你...数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作
MySQL数据库分表批量主键查询代理-mysql-partitions-proxy
日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表。这样的表过于庞大,导致...分表和表分区的目的就是减少数据库的负担,提高数据库的效率,通常点来讲就是提高表的增删改查效率
数据库分库分表(sharding).
一个简单的oracle数据库环境下的存储过程,介绍了如何从带年月人的分表取数据
数据库分库分表中间件实践,降低单机负载 降低单点故障带来的影响 提高读写的性能
关系型数据库本身比较...当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间
主要为大家详细介绍了MySql数据库分区和分表方法,告诉大家什么是分表和分区,mysql分表和分区有什么联系,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
java 数据库分库分表
主要介绍了PHP操作mysql数据库分表的方法的相关资料,需要的朋友可以参考下
本文介绍了数据库中的分表分库技术,包括垂直拆分和水平拆分两种方式。垂直拆分是根据数据表中的列进行拆分,将不同的列分到不同的表中,适用于数据表中存在使用频率、敏感信息、大型文本信息和1对多关系等情况。...