与两台较旧的机器相比,我最近建造的一台新机器在MySQL性能上遇到了一个非常令人费解的差异。这些机器使用MySQL作为基于IIS的The服务器的后端。
这三个选项都使用相同的MySQL选项(相同的ini文件)。所有用户都在运行相同的tables...all MyISAM。所有缓存都关闭。
最新的服务器(#3)生成网页的速度明显慢于其他服务器,我已经将问题缩小到了MySQL。最新的服务器(#3),几乎在我运行的每一个基准测试中都等于或大大超过了其他机器。
似乎缓慢的只有mysql。
起初,我怀疑一些特定的查询或配置可能是问题所在,但即使是最简单的查询也要慢一些。我一直在使查询变得越来越简单,差别仍然存在。无论我运行什么查询,简单还是复杂,新服务器(#3)的速度都要慢2-3倍,即使没有任何表访问。我甚至运行了以下查询,并且仍然检测到速度上存在2倍的差异:
SELECT 1; 一个相当简单但不只是简单查询的例子是:
SELECT COUNT(*) FROM users WHERE email LIKE '%ab%'用户有大约18000行的电子邮件索引。
这个查询在服务器#1上大约需要0.0090秒,在服务器#3上这个查询大约需要0.0270秒。
服务器#3本质上是空闲的,没有其他任何运行。我甚至还没有在它上安装防病毒软件,在这里#1处于中等负载状态,#2几乎处于空闲状态。
操作系统当然是不同的,但我不会期望在一个应用程序上的一个更快的机器上的一个更新的OS版本上会出现2-3倍的性能损失,而没有其他应用程序。
我少了什么?
服务器配置..。
服务器#1 (约2008-09年):
服务器#2 (约2010-11年,并作了一些升级):
服务器#3 (2013-14年):
下面是变量的差异("<“表示服务器1,其中">”表示服务器3...with日志文件和删除服务器名称差异):
diff Variables.Server1.csv Variables.Server3.csv
18a19
> "block_encryption_mode","aes-128-ecb"
22c23
< "character_set_database","latin1"
---
> "character_set_database","utf8"
29c30
< "collation_database","latin1_swedish_ci"
---
> "collation_database","utf8_general_ci"
99c100
< "innodb_autoextend_increment","1000"
---
> "innodb_autoextend_increment","64"
206c207
< "innodb_version","5.6.16"
---
> "innodb_version","5.6.17"
212c213
< "key_buffer_size","8388608"
---
> "key_buffer_size","268435456"
335c336
< "pseudo_thread_id","12032"
---
> "pseudo_thread_id","4"
430c431
< "timestamp","1396976138.845271"
---
> "timestamp","1396976213.390847"
440c441
< "version","5.6.16"
---
> "version","5.6.17"发布于 2014-05-14 09:38:58
我从没经历过。在Windows2012中,IPv6是第一优先。尝试禁用IPv6。从PowerShell运行以下命令:
HKLM:\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters c:> -Path -Name DisabledComponents -PropertyType DWord -Value 0 0xffffffff
那就重新开始。
在windows\system32 32\驱动器\etc\host中,取消注释127.0.0.1本地主机。
发布于 2014-06-25 08:05:58
虽然我还没有尝试过关于IPv6的建议,但我已经有了一些success....indirectly。
几周前,windows服务器发布了一个修补程序/服务包。在应用更新之后,mysql神奇地开始执行类似于或优于旧服务器的操作,而不是慢得多。我不知道它是什么补丁,因为有几个,但我注意到一个即时的改善。
https://stackoverflow.com/questions/22928369
复制相似问题