TechNote

とあるエンジニアのただのメモ

Windows+XAMPP使い必見!MySQLをほんの少しの作業で爆速化する方法

Windows+XAMPP環境にはかなりお世話になってきましたが、以前より「何か遅い」とは感じつつも、ローカル開発環境ってこんなもんなんだろうなーと思い込んで使ってきました。でも実際は、Windows+XAMPP環境を何もいじらずそのまま使用しているとMySQL接続が低速化するようで、それが原因で各ページの表示速度が「何か遅い」になっていたようです。今回たまたまその事実に気付くことができたので備忘録として残しておきます。
f:id:kojikoji75:20150709195952j:plain

1.Windows+XAMPP環境で「何か遅い」という現象
2.Windows+XAMPP環境でMySQL接続を爆速化する方法


1.Windows+XAMPP環境で「何か遅い」という現象

環境はWindows7+XAMPP1.8.2。ローカル開発環境としてかなり多用していました。
「何か遅い」とは思いながらも、「MVCフレームワーク使ってるから少し遅く感じるのかな?jQueryとかBootstrapとかもいろいろ読み込んでるしね(どこにボトルネックあるのか探ったら大変そうだし放っておこう)」くらいに考えていました。実際はそのような問題ではなく、MySQL接続の低速化が原因でした。


2.Windows+XAMPP環境でMySQL接続を爆速化する方法

あるとき、別件で調べ物をしてたらこの記事に出会いました。

要点を抜粋すると

Windows Vista/7 では、localhost の名前解決は DNS によって行われるようになっているよう(デフォルトの hosts ファイルでは)。 これはどうも Windows Vista/7 時代からのようで、XP 時代では無かったことのようです。 IPv4IPv6 のどちらかのコメントアウトを外すことで、外した方を使用することが可能なりますが、 両方ともコメントアウトされていると、IPv6 の方が優先され、ダメなら IPv4 でというような動作となっているようです。
XAMPPでMySQL接続がやたらと遅い件 - LAZE SOFTWARE

ということで、解決策は「hostsファイル」にあるようです。

C:\Windows\System32\drivers\etc\配下にあるhostsというファイルをテキストエディタで開きます。

このとき、そのまま生のファイルを開くと下記のようなメッセージが出て編集することができません。

C:\Windows\System32\drivers\etc\hosts
は現在他のプロセスによって書き込みが禁止されています。

ということでこのhostsファイルを一旦デスクトップなどにコピーして、そちらを編集することにします。編集内容は下記の通りです。

# localhost name resolution is handled within DNS itself.
#127.0.0.1 localhost
#::1 localhost

↓↓↓↓↓

# localhost name resolution is handled within DNS itself.
127.0.0.1 localhost
#::1 localhost

たったこれだけ。

2行目「127.0.0.1.....」の行のコメントアウト#を削除しただけです。
そのまま保存し、C:\Windows\System32\drivers\etc\配下のhostsに上書きコピーしましょう。(権限がどうのきいてきますが、かまわず上書きコピーです。)

Apacheを止める必要もなく作業完了しました。

この状態で、これまで遅かったWebシステムの特に重いページ(重めのSQLを何個か実行している)を表示させてみると....なんということでしょう。

変更前と変更後を表示速度の比較結果は下記の通りです。

比較項目 変更前Time 変更後Time
Loading Time Base Classes 0.0468 0.0468
Controller Execution Time 0.1248 2.1996
Total Execution Time 0.1716 2.2464

2秒以上も速くなってしまいました。

まあ、きちんとLoadingマークを表示させるとかの措置は取り入れてたとは言え、表示に2秒もかかるページをこれまで放置しておいたのも問題でしたね。

ということで、原因はまさかのWindowsにあったというお話でした。



あわせて読みたい

kojikoji75.hatenablog.com
kojikoji75.hatenablog.com
kojikoji75.hatenablog.com



エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド

エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド

実践ハイパフォーマンスMySQL 第3版

実践ハイパフォーマンスMySQL 第3版

PHPとMySQLのツボとコツがゼッタイにわかる本

PHPとMySQLのツボとコツがゼッタイにわかる本