0

最近構築した新しいマシンでは、2 台の古いマシンと比較して、MySQL のパフォーマンスに非常に不可解な違いがあります。マシンは、IIS ベースの Web サーバーのバックエンドとして MySQL を使用します。

3 つすべてが同じ MySQL オプション (同じ ini ファイル) を使用します。すべてが同じテーブルを実行しています...すべてMyISAM。キャッシュはすべてオフです。

最新のサーバー (#3) は、Web ページの生成が他のサーバーよりも著しく遅いため、問題を 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 は確かに異なりますが、より高速なマシン上の新しい OS バージョンでは、1 つのアプリケーションで 2 倍から 3 倍のパフォーマンスが低下するとは予想していませんでした。

何が欠けていますか????

サーバー構成....

サーバー #1 (2008-09 年頃):

  • Intel Core i7 エクストリーム エディション、3.2 GHz (Nehalem、4 コア)
  • インテル DX58SO マザーボード
  • 6 GB RAM (3 x 2GB)
  • Windows 2008、64 ビット
  • Raid 1 で 2 x Western Digital Black 640GB HD
  • 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):

  • Intel Core i7-4770K @ 3.5 GHz (ブロードウェル、4 コア)
  • ASUS Z87-WS マザーボード
  • 16 GB RAM (2 x 8 GB、1866)
  • Windows Server 2012 R2、64 ビット。
  • Raid 1 で 2 x Intel SSD DC S3500 160 GB
  • 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

私はそれを経験したことがあります。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 に答える