MultiThreading - один создает временную таблицу, другой потребляет - PullRequest
0 голосов
/ 26 октября 2018

У меня есть многопоточное приложение 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, не могу узнать, что на самом деле происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...