多线程-一个创建临时表,其他消耗

时间:2018-10-26 16:55:11

标签: java mysql multithreading mariadb

我有一个使用MariaDB 10.2.18的多线程Spring应用程序。 几个任务会创建物理临时表-这意味着我们在任务期间CREATE TABLE,在完成时DROP TABLE。但是我们意识到,MariaDB在创建/删除表时会提交事务。

为了使用Spring @Transaction,我们决定使用TEMPORARY创建表。但是在开发过程中,我们遇到了一个奇怪的错误,我对此一无所获。

我们的一个线程(例如 thread1 )创建了这个新的TEMPORARY TABLE并填充了它。

此后,另一个线程(例如 thread2 )负责从 thread1 TEMPORARY TABLE创建的INSERT INTO finalTable ... SELECT ... FROM temporaryTable中获取数据。

这将引发SQLException,表示由 thread1 创建的TEMPORARY TABLE不存在。

问题是:MariaDB TEMPORARY TABLE只能由创建它的线程使用吗?

由于MariaDB在10.2.2版中引入了INNODB_TEMP_TABLE,所以无法确定到底发生了什么。

0 个答案:

没有答案
相关问题