У нас есть проект с сотнями таблиц БД. Каждый раз, когда я открываю MySQL Workbench или меняю DB, он зависает на несколько минут. Все указывает на то, что WB последовательно выполняет SHOW FULL COLUMNS FROM {DB}.{TABLE}
для каждой таблицы в БД, в течение которого невозможно выполнить какие-либо запросы, а при попытке выполнить больше запросов пользовательский интерфейс перестает отвечать.
Иногда я пересекаю Великий брандмауэр Китая при доступе к БД и скорости ужасные ~ 15 кБ / с, что усиливает всю проблему до такой степени, что я должен отказаться от WB. Нельзя ждать 10 минут после каждого оператора use database;
...
Есть ли способ, которым я могу переключать БД / открывать соединения без необходимости ждать так долго, прежде чем я смогу выполнить какие-либо запросы?
Подробнее
Когда я смотрю список процессов, я вижу 4 открытых соединения с БД Workbench. Один запускает кучу SHOW FULL COLUMNS FROM {DB}.{TABLE}
, другой перечисляет процессы (так как я использую Администрирование / Открытые соединения WB, который работает), и 2 соединения простаивают.
Это выходные данные отладки WB:
21:40:27 [INF][SQL Editor Form]: Opened connection '...' to Source distribution version 5.6.21-69.0-log
21:40:28 [DB3][ GRT task]: Sending task "Live Schema Refresh Task" to dispatcher (don't wait)...
21:40:28 [DB3][ GRTDispatcher]: Running task "Live Schema Refresh Task"
21:40:29 [DB3][ GRTDispatcher]: Task "Live Schema Refresh Task" finished
-- Schema refresh started here
21:40:29 [DB3][SqlEditorSchemaTree]: Fetch schema contents for {DATABASE_HERE}
21:40:29 [DB3][ GRT task]: Sending task "Live Schema Fetch Task" to dispatcher (don't wait)...
21:40:29 [DB3][ GRTDispatcher]: Running task "Live Schema Fetch Task"
-- Here I executed query "SELECT 1;" - it started spinning wheel...
21:40:45 [DB1][SQL Editor Form]: Executing SQL in editor: SQL File 4* (current statement only: yes)...
21:40:45 [DB3][ GRT task]: Sending task "execute sql queries" to dispatcher (don't wait)...
21:40:45 [DB3][ GRTDispatcher]: Running task "execute sql queries"
21:40:45 [DB1][SQL Editor Form]: Background task for sql execution started
21:42:09 [DB2][ grt]: wb.form.showOptions finished in 67.86s
-- Schema refresh finished
21:42:36 [DB3][ GRTDispatcher]: Task "Live Schema Fetch Task" finished
21:42:36 [DB3][SQL Editor Form]: Executing statement range: 0, 8...
21:42:36 [DB3][SQL Editor Form]: Determined statement type: 8
21:42:36 [DB3][SQL Editor Form]: Result will not be editable
21:42:36 [DB3][SQL Editor Form]: Running...
21:42:37 [DB2][ SqlEditorPanel]: Query successfully finished in editor SQL File 4*
21:42:37 [DB3][ GRTDispatcher]: Task "execute sql queries" finished
-- I got result of "SELECT 1;" 2 minutes later
ОБНОВЛЕНИЕ : я заполнил ошибку с Oracle - до сих пор похоже, что обходного пути нет, и это серьезно ограничивает функциональность в некоторых сценариях ios. Проголосуйте, нажав «Влияет на меня», если у вас возникла такая же проблема: https://bugs.mysql.com/bug.php?id=99417