首页 新闻 搜索 专区 学院

关于MySQL锁的问题

0
悬赏园豆:100 [已关闭问题] 关闭于 2013-08-30 15:32

业务场景是这样的:

TableTemp 表有一个字段Status,有两种值:100(未处理),200(已处理)。

现在有两个服务都会访问表TableTemp,一个服务负责每隔10分钟查找TableTemp表的数据,根据查找的结果进行相关逻辑运算,另一个服务 在每天0晨 将表 的名字修改为:TableTemp_(当前年夜日),并新建一个表名字叫 TableTemp,将刚才修改名字的表TableTemp__(当前年夜日)里字段Status为100的值移动到新建的表TableTemp里。

因为设计到两个服务可能同时访问TableTemp表的问题,请问该如何解决,

本来菜鸟一个,谢谢各位了,

王俊1234的主页 王俊1234 | 初学一级 | 园豆:57
提问于:2013-05-26 20:02
< >
分享
所有回答(6)
0

你可以反向思考一下的

第二个服务 每天0晨 把 200的数据从 TableTemp 移走 TableTemp_(当前年夜日),不就可以解决了

Yu | 园豆:12944 (专家六级) | 2013-05-26 20:53
0

这个sql作业都可以做这样的事情。你就完全正常的操作一点问题都没有

chenping2008 | 园豆:9836 (大侠五级) | 2013-05-26 21:52
0

在执行 0 点服务时,禁用 另一个服务,当0点的服务执行完成后,再启用另一个服务, 禁用和启用,都可以写到 0点服务里面。

@@@一统@@@ | 园豆:1551 (小虾三级) | 2013-05-27 08:09
0

1)凌晨的那个服务(batch),先把TableTemp Lock掉(锁WRITE就好了).创建一个新表TableTemp_yyyymmdd;

2)使用INSERT...SELECT...将数据从TableTemp导入到TableTemp_yyyymmdd表中

3)unlock TableTemp

当然另外一个服务中,操作TableTemp表时也应该有锁的吧?

三阶 | 园豆:1436 (小虾三级) | 2013-05-27 13:12
0

怎么感觉你这样做怪怪的啊???干吗改表结构!!!你完全可以一个服务:建新表TableTemp__(当前年夜日),从TableTemp中移植状态200的数据到新建表,然后删除老表状态为200的数据,这样你对原有表没有什么大的改动,仅是数据的变化!你做了删除表,有没有处理过万一查询不到这个表呢?你现在这种做法估计有很多潜在风险,会遇到很多未知的问题。

学海一叶 | 园豆:204 (菜鸟二级) | 2013-05-28 09:46
0

yt1983 | 园豆:202 (菜鸟二级) | 2013-05-30 15:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册