WindowsとLinuxでMySQLを実行する際、何が違う?
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 4,318
今回、私事ではあるのですが、ひとつ質問させていただきたいと思います。
WindowsとLinuxでPHPを利用してMySQLと接続する際、何が違うのかということです。
私は普段Linux環境で作業を行っています。
ある案件で、Linux環境で開発したものをWindows環境に設置して動作をさせることを行いました。
MTのデータベースからデータを取得し、PHPで加工して出力するといったものなのですが(ざっくりですみません。。)、いざWindowsに設置してみると、目に見えるほど表示速度に違いがありました。
ただしLinux環境では気になるほどの遅さではなく、Windowsに設置した状態ではとても遅いというものでした。
Mysqlのチューニングはこちらで考えうる限りは行い、かつ名前解決で躓くという問題(IPv4,IPv6の件)も、localhost→127.0.0.1に変更してあり、my.iniにはskip-name-resolveも念のため追記してあります。
下記、実際に行ってみた検証結果です。
一応PHPも確認してみましたが、早かったです。。。
【PHP速度検証】
<?php
$time_start = microtime(true);
for($i=0;$i<1000000;$i++) {
var_dump($i);
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo $time;
結果 : windows 1.8961119651794
linux 1.9274280071259
------------------------------------------------------------------------
【MySQL速度検証】
<?php
$time_start = microtime(true);
for ($i=0; $i < 300; $i++) {
$link = mysql_connect('localhost', 'root', '');
$db_selected = mysql_select_db('test2', $link);
$result = mysql_query('SELECT * FROM tst');
while ($row = mysql_fetch_assoc($result)) {
print('<p>');
print('id='.$row['id']);
print(',name='.$row['name']);
print('</p>');
}
mysql_close($link);
}
$time_end = microtime(true);
$time = $time_end - $time_start;
echo $time;
結果 : windows 2.0411188602448
linux 0.27686905860901
かなりな差がでた結果となってしまいました。。。
MySQL,PHP共にチューニング済みな状態です。また、connect部分はlocalhost→127.0.0.1に変更してwindowsでは実行しています。
もし、手掛かりになることをご存じの方がいらっしゃれば、ご教示頂けると幸いです。orz
よろしくお願い致します。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
また、現在の測定方法だと接続に時間がかかっているのか、クエリに時間がかかっているのかわかりません。
接続、解除をループの外に出した場合はどうなるでしょうか?
WindowsとLinuxでInnodbの書き込みであれば
innodb_flush_log_at_trx_commit
の設定でパフォーマンスに差が出るようです。投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.23%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2015/01/22 10:28
結果から申しますと、原因が判明致しました。
DBエンジンのチェックを行おうとした際、InnoDBだと思い込んでいたのですが、いざ中身を空けてみるとMyISAMとなっていました。。。orz
my.iniにてデフォルト設定をInnoDBにしていたのですが、Movable Typeの自動DB生成にてエンジンがMyISAMとして構築されてしまっていたようです(ものすごい初歩的な気づきで、お恥ずかしい限りです。。
データベースエンジンをInnoDBにしてやると、処理速度がLinuxよりは少し劣ってはいますが、ほぼ変わらない状態にまで改善しました。
本当にありがとうございました。
現状でもまだLinuxに劣っている点は少し気になりますが、これで案件を進めることができそうです。
重ね重ね、ありがとうございました。