将计算结果转储到数据库

时间:2012-05-13 11:23:24

标签: mysql concurrency

我正在尝试使用Java和MySQL 5.1.63 GA构建一个系统,其中有一些输入表和数据库中的一些输出表。
为了填充输出表,我编写了一个过程,该过程将从servlet调用并在最终填充输出表之前生成许多中间表。有很多计算,甚至可能需要一段时间。

输入和输出表使用user_id操作,但中间表只包含值列。

但我有以下顾虑:
1)如果两个用户一次触发计算序列会发生什么,我该如何保护中间表?

2)我可以使用临时表等其他任何技术吗?

1 个答案:

答案 0 :(得分:1)

隔离每个用户的方法是在临时表中完成所有中间计算。根据MySQL文档:

  

TEMPORARY表仅对当前连接可见,并在关闭连接时自动删除。这意味着两个不同的连接可以使用相同的临时表名,而不会相互冲突或与现有的同名非TEMPORARY表冲突。

只要输入和输出表全部由user_id隔离,你应该没问题。

更改代码以使用临时表也很容易。大多数情况下,您只需将TEMPORARY一词添加到CREATE TABLE语句中,如下所示:

CREATE TEMPORARY TABLE foo [...]