0

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

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

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

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

4

1 回答 1

1

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

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

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

更改代码以使用临时表也可能很容易。大多数时候,您所要做的就是将这个词添加TEMPORARY到您的CREATE TABLE陈述中,如下所示:

CREATE TEMPORARY TABLE foo [...]
于 2012-05-13T11:50:38.297 回答