新的Windows 2012 R2 Server上的MySQL性能降低

时间:2014-04-08 05:37:07

标签: mysql windows performance windows-server-2008 windows-server-2012-r2

我遇到了一个与两台旧机器相比最近构建的新机器的MySQL性能非常令人费解的差异。这些机器使用MySQL作为基于IIS的网络服务器的后端。

这三个都使用相同的MySQL选项(相同的ini文件)。 所有人都在运行相同的表...所有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几乎处于空闲状态。

操作系统肯定是不同的,但我不希望在一个应用程序上更快的机器上的新操作系统版本上损失2-3倍的性能,而不是其他应用程序。

我错过了什么????

服务器配置....

服务器#1(大约2008-09):

  • 英特尔酷睿i7至尊版,3.2 GHz(Nehalem,4核)
  • Intel DX58SO主板
  • 6 GB RAM(3 x 2GB)
  • Windows 2008,64位
  • 使用Raid 1中的2 x Western Digital Black 640GB HD
  • MySQL 5.6.16
  • Connector ODBC 5.2

服务器#2(大约2010-11,有一些升级):

  • Intel Core i7,X995 @ 3.6 GHz(Westmere,6核)
  • Intel DX58SO2主板
  • 12 GB RAM(3 x 4 GB)
  • Windows 7 Professional,64位
  • 1 x Intel SSD 480 GB(1 - 2年前)
  • MySQL 5.6.16
  • Connector ODBC 5.2

服务器#3(2013-14):

  • 英特尔酷睿i7-4770K @ 3.5 GHz(Broadwell,4核心)
  • 华硕Z87-WS主板
  • 16 GB RAM(2 x 8GB,1866)
  • Windows Server 2012 R2,64位。
  • 2个英特尔SSD DC S3500 160 GB in Raid 1
  • MySQL 5.6.17
  • Connector ODBC 5.2

这是变量的差异("<"代表服务器1,其中">"代表服务器3 ...删除了日志文件和服务器名称差异) :

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"

2 个答案:

答案 0 :(得分:0)

我曾经历过这一点。在Windows 2012中,IPv6是第一优先。 尝试禁用IPv6。 从PowerShell运行:

C:GT; New-ItemProperty -Path HKLM:\ SYSTEM \ CurrentControlSet \ services \ TCPIP6 \ Parameters -Name DisabledComponents -PropertyType DWord -Value 0xffffffff

然后重启。

在windows \ system32 \ drivers \ etc \ host中 取消注释127.0.0.1 localhost。

答案 1 :(得分:0)

虽然我还没有尝试过关于IPv6的建议,但我已经取得了一些成功......间接地。

几周前,为Windows服务器发布了一个补丁/服务包。应用更新后,mysql神奇地开始执行与旧服务器类似或更好的操作,而不是慢得多。我不确切地知道它有几个补丁,但我注意到了立即的改进。