MySQL永远挂起“rehash”命令

时间:2012-12-11 15:14:17

标签: mysql hash autocomplete hang

我们有一个MySQL服务器,其中包含多个数据库,用于不同类型的数据。其中一个是wordpress数据库。

我可以连接好,“显示数据库”,“使用苹果”,“使用橙子”等(替代我们实际数据库中的水果)但是当我“使用wordpress”而不是“数据库已更改”时,我得到了

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

果然,如果我用一个额外的-A标志启动mysql,一切似乎都有效。然后我可以“使用wordpress”并查看数据。

如果我用-A开始并且“使用wordpress”它可以工作,那么我会“重新”并且它会挂起。

有人见过这个吗?我能做些什么呢?

1 个答案:

答案 0 :(得分:2)

MySQL命令行客户端提供数据库/表/列名称完成:即,当您开始键入名称并按 Tab 时,名称已完成。为此,客户端会构建一个在调用完成时查询的数据库,表和列名称的哈希值。

如果命令行客户端在启用auto-rehashing的情况下启动,它会在您连接到数据库时自动构建完成哈希,并使其保持最新状态。对于大型数据库,这可能需要一些时间。使用--no-auto-rehash-A)启动客户端时,不会构建散列,并且在手动构建散列(使用rehash\#)之前无法完成。这减少了启动时间,特别是对于大型数据库。

因此,散列在大型数据库上花费很长时间是正常的。当您开始启用自动重新哈希时(即没有-A,或者-A然后rehash),这就是您似乎遇到的情况。对于小型数据库(在您的示例中为applesoranges),它并不明显,但对于较大的数据库(wordpress),它很慢。我使用的一些替代方案:

  • 不要重新拍摄
  • 在哈希构建时喝咖啡
  • 使用提供更快完成的其他客户