Никогда не разделяйте соединение MySQL на несколько потоков. Вы будете вызывать условия гонки. Каждый поток может (и неизбежно получает) получать результаты для запросов, запущенных в другом потоке, и это происходит непредсказуемо. В итоге каждый поток получает непонятное подмножество пакетов, которые он хочет, в сочетании с дополнительными пакетами, которые ему не нужны.
Кроме того, вы упоминаете несколько запросов, но вы также не должны использовать это. Выполните одну инструкцию за вызов. Использование мультизапроса не дает никаких преимуществ, если ваша сеть хоть сколько-нибудь близка к разумной производительности.
Вы можете быть уверены, что установка или чтение пользовательских переменных, которые вы показываете в своем примере, надежны при отдельных вызовах query (), если вы делаете это по тому же соединению.
Что касается node.js, он по умолчанию допускает только одну инструкцию на запрос. Вы можете включить multipleStatements
(см. node-mysql несколько операторов в одном запросе ), если хотите.
Альтернатива - запускать операторы по одному и запускать их последовательно. Вы можете убедиться, что следующий оператор ожидает завершения предыдущего, запустив его в функции обратного вызова для предыдущего оператора. Пример показан в вопросе OP в множественном операторе node-mysql в одном запросе .