gpt4 book ai didi

MySQL 工作台 : How to disable scanning of all tables during start?

转载 作者:行者123 更新时间:2023-12-03 22:29:50 24 4
gpt4 key购买 nike

我们有一个包含数百个数据库表的项目。每次我打开 MySQL Workbench 或更改数据库时,它都会卡住几分钟。所有指向WB顺序执行SHOW FULL COLUMNS FROM {DB}.{TABLE}在 DB 中的每个表上,在此期间无法执行任何查询,并且在尝试执行更多查询时,UI 变得无响应。

我在访问 DB 时有时会穿过中国的防火墙,速度很糟糕~15kB/s,这放大了整个问题,以至于我不得不放弃 WB。每个人都不能等 10 分钟 use database;陈述...

有没有一种方法可以切换数据库/打开连接而不必等待那么长时间才能执行任何查询?

更多信息

当我查看进程列表时,我看到 4 个 Workbench DB 连接打开。一个跑一堆SHOW FULL COLUMNS FROM {DB}.{TABLE} ,另一个列出进程(因为我使用 WB 的 Administration/Open Connections 工作)和 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 填充了一个错误 - 到目前为止,似乎没有可用的解决方法,并且在某些情况下严重限制了功能。如果您有同样的问题,请点击“影响我”投票: https://bugs.mysql.com/bug.php?id=99417

最佳答案

尝试禁用代码完成,这是 MySQL Workbench 的一部分,它需要预先提供所有元数据:

enter image description here

如果模式树被激活或第一次扩展其节点,模式树仍将获得模式名称和模式对象的名称。

可能的解决方法:

MySQL Workbench 需要在模式树中显示一些内容,并且列出 DB 对象是优于任何命令行客户端的主要优势之一。但是您可以通过从不切换模式来将 DB 对象加载限制为绝对最小值。然后延迟只会在连接启动时发生一次,然后其他一切都应该很快。如果您确实需要使用多个模式,请使用到同一主机的多个连接,每个连接使用不同的模式作为默认模式(可以在连接参数中设置)。

诚然,这不是一个完美的解决方案,但至少应该能让你在启动阶段后正常工作。

关于MySQL 工作台 : How to disable scanning of all tables during start?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61392928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com