业务场景是这样的:
TableTemp 表有一个字段Status,有两种值:100(未处理),200(已处理)。
现在有两个服务都会访问表TableTemp,一个服务负责每隔10分钟查找TableTemp表的数据,根据查找的结果进行相关逻辑运算,另一个服务 在每天0晨 将表 的名字修改为:TableTemp_(当前年夜日),并新建一个表名字叫 TableTemp,将刚才修改名字的表TableTemp__(当前年夜日)里字段Status为100的值移动到新建的表TableTemp里。
因为设计到两个服务可能同时访问TableTemp表的问题,请问该如何解决,
本来菜鸟一个,谢谢各位了,
你可以反向思考一下的
第二个服务 每天0晨 把 200的数据从 TableTemp 移走 TableTemp_(当前年夜日),不就可以解决了
这个sql作业都可以做这样的事情。你就完全正常的操作一点问题都没有
在执行 0 点服务时,禁用 另一个服务,当0点的服务执行完成后,再启用另一个服务, 禁用和启用,都可以写到 0点服务里面。
1)凌晨的那个服务(batch),先把TableTemp Lock掉(锁WRITE就好了).创建一个新表TableTemp_yyyymmdd;
2)使用INSERT...SELECT...将数据从TableTemp导入到TableTemp_yyyymmdd表中
3)unlock TableTemp
当然另外一个服务中,操作TableTemp表时也应该有锁的吧?
怎么感觉你这样做怪怪的啊???干吗改表结构!!!你完全可以一个服务:建新表TableTemp__(当前年夜日),从TableTemp中移植状态200的数据到新建表,然后删除老表状态为200的数据,这样你对原有表没有什么大的改动,仅是数据的变化!你做了删除表,有没有处理过万一查询不到这个表呢?你现在这种做法估计有很多潜在风险,会遇到很多未知的问题。