`

关于数据库分表和后台操作(会一直补充)

阅读更多

   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);
				}	
			}
			
			
		}
	}

 

分享到:
评论

相关推荐

    zabbix 5.0 mysql 数据库分表操作详细流程

    其中有每个命令的使用说明与注释。并增加了清理数据的方式。以及导入输入的注意事项

    PHP操作mysql数据库分表的方法_.docx

    分表是一种常见的数据库扩展策略,它通过将一个大表拆分成多个小表来提高查询效率和系统性能。在PHP中,我们可以编写SQL语句或者使用ORM(对象关系映射)框架来实现这一目标。下面我们将深入探讨两种常见的分表策略...

    数据库分库分表

    `db-route-demo`可能是这个路由机制的示例代码,展示了如何在实际项目中实现数据的定位和操作。 分库分表虽然可以解决数据量大、查询慢的问题,但也带来了一些新的挑战,比如跨库事务的处理、数据一致性问题、...

    数据库完成计分表

    在教育领域,尤其是在计算机科学的教学实践中,为了更好地评估学生在Access数据库大作业方面的表现,通常会采用计分表的形式来汇总和分析学生的成绩。这份计分表不仅包括对学生的个人评价,还涉及到对团队合作项目的...

    数据库分表处理设计思想和实现

    在大数据量的情况下,单表操作可能导致锁表、阻塞,严重影响数据库性能和用户体验。为了解决这些问题,分表技术应运而生,通过将数据分散到多个表中,降低单一表的访问压力,提升数据处理速度。 分表的主要好处包括...

    数据库分库分表思路.docx

    数据库分库分表是应对大数据量和高并发场景下的常用策略,目的是为了减轻单个数据库的负担,提高系统的整体性能和稳定性。随着互联网业务的发展,单个关系型数据库的存储容量、连接数和处理能力往往难以满足需求。当...

    TP5+MySQL通用分表代码

    - 很简单,网上很多关于分表的都是含糊其辞,没有任何详细的,通用的,既然没有,那么我写一个出来吧。 - 主要目的 - 产品上线以后,数据量越来越大,当一个表有几十万上百万条记录的时候,是时候考虑分表了。...

    多数据源+数据库分库分表

    水平分表是在同一个数据库内,把同一个表的数据按一定规则拆到多个表中,多数据源采用 mybatis-plus的dynamic-datasource 分库分表采用sharding-jdbc 数据库连接池管理是alibaba的druid-spring-boot-starter 项目使用...

    MySQL数据库分表批量主键查询代理-mysql-partitions-proxy.zip

    当单个表的数据量过大,为了提高查询速度和维护数据库性能,通常会将大表拆分为多个小表,这就是分表。分表方式有多种,比如按照范围、哈希值或者时间等规则进行切分。在MySQL中,可以使用内置的分区功能来实现。 ...

    Python+MySQL分表分库实战

    综上所述,"Python+MySQL分表分库实战"的学习内容涵盖了数据库设计原则、Python数据库操作技巧、分库分表策略以及性能优化等多个方面。通过学习和实践,开发者可以有效地解决大数据场景下的存储和查询问题,提高系统...

    shardingsphere 整合 达梦数据库 实现分表分库 (包含test demo)

    1、shardingsphere 并不直接支持达梦数据库,需要实现部分接口逻辑。 2、本demo并不完全支持达梦sql 3、包里面含有test demo可以直接测试 4、感谢shardingsphere 团队。 5、具体如何实现的 请查看我的博文 ...

    基于分布式的数据库分库与分表策略研究.pdf

    数据库代理服务器在收到插入操作的SQL语句后,会根据任务分配表原则进行分库分表操作,同时生成路由表,便于后续数据的更新、删除等操作的快速定位。 在实际操作中,数据库插入操作时,客户端首先发送插入语句给...

    php mysql分库分表实例

    "php mysql分库分表实例"这个主题就是针对这样的需求,它涉及到如何利用PHP编程语言来实现MySQL数据库的分库分表操作,以提高系统的性能和可扩展性。 分库分表是一种常见的数据库垂直切分和水平切分策略,用于解决...

    MySQL分表及分表后插入sql

    MySQL分表及分表后插入sql语句,表为订单表,可以参考一下

    数据库分库分表存储分析思路

    1. 垂直分表:垂直分表适合将表中某些不常用而且占了大量空间的列拆分出去,垂直分表的引入的复杂性主要体现在表操作的数量会增加。 2. 水平分表:水平分表适合表行数特别大的表,如果单表行数超过 5000 万就必须...

    数据库分库分表的技术演进与最佳实践.docx

    数据库分库分表技术可以将大型数据库分割成多个小的逻辑数据库,从而提高数据库的性能和可扩展性。同时,该技术还可以提高数据的安全性和可靠性,例如,可以将敏感数据存储在单独的数据库中,以提高数据的安全性。 ...

    什么是分表和分区 MySql数据库分区和分表方法

    当一个表包含数百万甚至上千万的记录时,查询和插入操作可能会变得非常缓慢,导致整个数据库系统的性能下降。分表和分区的目标是提高数据库的效率,特别是增、删、改、查(CRUD)操作的速度。 分表,顾名思义,是将...

Global site tag (gtag.js) - Google Analytics