У меня есть многопоточное приложение Spring, использующее MariaDB 10.2.18.Несколько задач создают физические временные таблицы - это означает, что мы CREATE TABLE
во время задачи и DROP TABLE
, когда закончим.Но мы понимаем, что MariaDB фиксирует транзакцию при создании / удалении таблицы.
Чтобы использовать Spring @Transaction
, мы решили использовать TEMPORARY
для создания наших таблиц.Но при разработке мы получаем странную ошибку, и я ничего не могу найти в ней.
Один из наших потоков (скажем, thread1 ) создает этот новый TEMPORARY TABLE
и заполняет его.
После этого другой поток (скажем, thread2 ) отвечает за получение данных из этого TEMPORARY TABLE
, созданного thread1 и INSERT INTO finalTable ... SELECT ... FROM temporaryTable
.
* 1021.* Это выдает
SQLException
, говоря, что
TEMPORARY TABLE
, созданный
thread1 , не существует.
Вопрос в том, что MariaDB TEMPORARY TABLE
может использоваться только тем потоком, который его создал?
Поскольку MariaDB представила INNODB_TEMP_TABLE
в версии 10.2.2, не могу узнать, что на самом деле происходит.