我在本地网络上的mac mini服务器上设置了一个mysql数据库。当我以root用户身份从服务器查询数据库时,一切都表现良好。但是,当我从本地网络上的另一台机器登录到mysql时,我遇到了严重问题,我执行了相同的查询。
例如,表items
包含1,831,218行和两列item
和total
(未编入索引)。当我执行以下查询时,预期非常快:
mysql> select * from items limit 10;
+------+-----------+
| item | total |
+------+-----------+
| a | 577846916 |
| b | 489378579 |
| c | 485798873 |
| d | 476865689 |
| e | 425954264 |
| f | 399431640 |
| g | 375218023 |
| h | 325892006 |
| i | 169948795 |
| j | 116927132 |
+------+-----------+
10 rows in set (0.00 sec)
现在,通过从网络上的另一台计算机远程登录:>mysql --host=192.168.2.2 -u newuser -p
,其中newuser
具有数据库的选择权限,我执行相同的查询并获得截然不同的执行时间。
mysql> select * from items limit 10;
+------+-----------+
| item | total |
+------+-----------+
| a | 577846916 |
| b | 489378579 |
| c | 485798873 |
| d | 476865689 |
| e | 425954264 |
| f | 399431640 |
| g | 375218023 |
| h | 325892006 |
| i | 169948795 |
| j | 116927132 |
+------+-----------+
10 rows in set (7 min 3.10 sec)
这是一个非常糟糕的例子,不会一直发生,但一般来说查询要慢得多(通常比服务器本身慢10到100倍)。对于这么大的减速,似乎瓶颈与网络中的延迟无关,而是一些配置问题导致mysql与服务器和各个节点之间无法很好地通信。
除了验证两台机器都运行相同版本的mysql:mysql Ver 14.14 Distrib 5.6.19, for osx10.7 (x86_64) using EditLine wrapper
之外,我不确定要验证的其他设置以及尝试解决此问题的其他方法。
如果有人有任何想法,请告诉我,谢谢。