実行時間が70秒近くかかる激重クエリがある。
この実行に於ける、ハードウェアの違いによる差を調べてみた。
<マシン①>
OS:Debian 6.0.9
Apache:2.2.16
MySQL:5.1.73
CPU:Phenom X3 8400 (2.1GHz,3コア)
MEM:4GB
HDD:ハードディスク(ソフトウェアRAID1)
NIC:100BASE
MySQLの設定変更アリ
<マシン②>
OS:Debian 7.4
Apache:2.2.22
MySQL:5.5.35
CPU:Core i5 650 (3.2GHz,4コア)
MEM:8GB
HDD:ハードディスク(ソフトウェアRAID1)
NIC:GbE
MySQLの設定変更ナシ
同じDBとSQL文を各々のマシンに入れ、SQL文が書かれたPHPファイルを別マシンから見る(=クエリ実行)方法をとった。
結果は…
マシン①:77.69秒
マシン②:34.09秒
何と半分以下に!
まぁ、①と②のOS、Apache、MySQLのバージョン、及び、MySQLの設定(/etc/mysql/my.cnf)が異なるので、単純にハードウェアの差とは言えないのであるが。
昔のCPUの3GHzと今のCPUの3GHzの処理能力が違うように、周波数の差以上に差が出ているのだろう。
なお、ハードディスクは何れも古いもので、両者の差はほとんどない。
なお、②は4コアであっても、以前3コアの時に書いたように、全てのコアを有効には使っていない。
CPU占有率は高い間、CPU1とCPU2のどちらか片方が使用されているだけであり、さらに、今回の場合は、2つのコア(CPU3とCPU4)は、ほぼ使われていない。
コア数の差(4-3=1個)は、あまり関係がないと思われる。
マシン①のCPUを2コアから3コアに替えたことがあるが、差はあまり生じなかった。
さらに、マシン②をSSDに換装すれば、より差が付くのか?
データの読み出しが多いのかそうでないのか、その処理の違いで、何を換装すれば効果が出るかは変わってくる。
しかし、それらを細かく見ていると時間がかかる。
よって、
「全部投入」がベストアンサーwww
今は、CPUもメモリもSSDも安いしね。
考えてる時間が長いと、その分の時給で新パーツが買えてしまうかもしれないよ(笑)
売り上げランキング: 31,716