0

与两台旧机器相比,我最近构建的一台新机器在 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 年):

  • Intel Core i7 Extreme Edition,3.2 GHz(Nehalem,4 核)
  • 英特尔 DX58SO 主板
  • 6 GB 内存 (3 x 2GB)
  • 视窗 2008,64 位
  • 2 x 西部数据黑色 640GB HD 用于 Raid 1
  • MySQL 5.6.16
  • 连接器 ODBC 5.2

服务器 #2(大约 2010-11 年,进行了一些升级):

  • Intel Core i7,X995 @ 3.6 GHz(Westmere,6 核)
  • 英特尔 DX58SO2 主板
  • 12 GB RAM (3 x 4 GB)
  • Windows 7 专业版,64 位
  • 1 x Intel SSD 480 GB(1-2 年前)
  • MySQL 5.6.16
  • 连接器 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 x Intel SSD DC S3500 160 GB 在 Raid 1
  • MySQL 5.6.17
  • 连接器 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"
4

2 回答 2

0

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

几周前,为 windows 服务器发布了一个补丁/服务包。应用更新后,mysql 神奇地开始执行与旧服务器相似或更好的性能,而不是慢得多。我不完全知道它是什么补丁,因为有几个,但我注意到一个立即的改进。

于 2014-06-25T08:05:58.867 回答
0

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

c:> 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。

于 2014-05-14T09:38:58.037 回答