我在 Windows 7 上运行 MySQL 5.6(64 位)。我正在 32 位 Windows 7 上测试最近从 MySQL 5.0 升级的数据库。(我还复制了 my.ini,做了一些更改)
我发现建立连接需要很长时间(大约 1 秒)。作为示例,我创建了一个非常简单的 SQL 脚本:
select 1 as n;
然后我在批处理文件中运行了 10 次,花了 10 秒才能完成:
mysql -h localhost -u root -D myschema 0< myscript.sql
(是的,这里没有密码,这是一个仅监听127.0.0.1的测试DB)
有人知道为什么这么慢吗? (参见下面的 my.ini)
[client]
port=3306
[mysql]
default-character-set=latin1
[mysqld]
port=3306
bind-address=127.0.0.1
basedir="C:/Program Files/MySQL/mysql-5.6.10-winx64/"
datadir=C:/DATA
character-set-server=latin1
default-storage-engine=myisam
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
max_connections=100
query_cache_size=0
table_open_cache=256
tmp_table_size=18M
thread_cache_size=8
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=35M
key_buffer_size=25M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=256K
innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=47M
innodb_log_file_size=24M
innodb_thread_concurrency=8
log-bin=c:/data/mysql/binarylog
max_binlog_size=1024M
enable-named-pipe
slow_query_log=
expire_logs_days=90
哎哟!看来这是一个骗局。看:
为什么连接 MySQL 服务器这么慢? https://stackoverflow.com/questions/1292856/why-connect-to-mysql-is-so-slow
https://serverfault.com/questions/408550/connecting-to-mysql-from-php-is-extremely-slow https://serverfault.com/questions/408550/connecting-to-mysql-from-php-is-extremely-slow
我在 64 位计算机上启用了 IPv6,但在 32 位计算机上未启用。当我使用以下备用字符串连接时,事情要快得多:
mysql -h 127.0.0.1 -u root -D myschema 0< myscript.sql
仍然不确定为什么会发生这种情况,但至少有一个解决方法!唉可怜localhost
我很了解他。
EDIT:对 my.ini 进行以下更改允许使用localhost
在脚本和连接字符串中:
bind-address=::1
注意:绑定到::ffff:127.0.0.1
or localhost
似乎没有帮助。我读到了有关将 IPv6 和 IPv4 地址绑定到 MySQL 服务器的信息,以便所有 3 个连接字符串都可以工作(例如-h ::1
, -h 127.0.0.1
, -h localhost
)。然而,我一次只能让其中一两个客户端字符串工作。
EDIT2:绑定方式如下:
bind-address=*
彻底解决了此问题,IPv4 和 IPv6 客户端都可以连接。唯一的缺点是现在允许远程连接。我还没有找到使用 TCP 的方法localhost
限制并同时约束两者127.0.0.1
and ::1
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)