我正在尝试使用Java和MySQL 5.1.63 GA构建一个系统,其中有一些输入表和数据库中的一些输出表。
为了填充输出表,我编写了一个过程,该过程将从servlet调用并在最终填充输出表之前生成许多中间表。有很多计算,甚至可能需要一段时间。
输入和输出表使用user_id操作,但中间表只包含值列。
但我有以下顾虑:
1)如果两个用户一次触发计算序列会发生什么,我该如何保护中间表?
2)我可以使用临时表等其他任何技术吗?
答案 0 :(得分:1)
隔离每个用户的方法是在临时表中完成所有中间计算。根据MySQL文档:
TEMPORARY表仅对当前连接可见,并在关闭连接时自动删除。这意味着两个不同的连接可以使用相同的临时表名,而不会相互冲突或与现有的同名非TEMPORARY表冲突。
只要输入和输出表全部由user_id隔离,你应该没问题。
更改代码以使用临时表也很容易。大多数情况下,您只需将TEMPORARY
一词添加到CREATE TABLE
语句中,如下所示:
CREATE TEMPORARY TABLE foo [...]