2017-09-01 3 views
0

MYSQLのパフォーマンスが差異マシンの同じRAMとCPUに挿入される問題があります。差異のある仮想マシンでMYSQLが遅く挿入されるのはなぜ同じRAMとCPU

私はVMウィンドウ上でMYSQLを実行しています2k3 4GBのRAM、4台のCPUをVMWare上に構築Workstaion 12を自分のPC上で実行VMウィンドウ2k3 4GBのRAM、4台のCPUがESXi 6.5上に構築されています。もちろん、Serverのすべてのハードウェアは私のPCより優れています。

私のPCのMYSQLは3000のクエリを1.5秒間に挿入しますが、サーバーでは3000のクエリを48秒間に挿入します。何が問題ですか?

2 VMは同じのmy.ini設定を持っている:

[client] 

port=3306 

[mysql] 

default-character-set=latin1 


[mysqld] 
port=3306 
basedir="C:/Program Files/MySQL/MySQL Server 5.5/" 

datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/" 
character-set-server=latin1 

default-storage-engine=INNODB 

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 

max_connections=500 

query_cache_size=0 

table_cache=256 

tmp_table_size=18M 

thread_cache_size=8 

myisam_max_sort_file_size=100G 

myisam_sort_buffer_size=35M 

key_buffer_size=25M 

read_buffer_size=64K 

read_rnd_buffer_size=256K 

sort_buffer_size=256K 

innodb_additional_mem_pool_size=2M 

innodb_flush_log_at_trx_commit=1 

innodb_log_buffer_size=1M 

innodb_buffer_pool_size=47M 

innodb_log_file_size=24M 

innodb_thread_concurrency=18 
私は0.5秒で非常に速く0または2サーバーの実行に innodb_flush_log_at_trx_commitをconfigコン

しかし、私はinnodb_flush_log_at_trx_commitが上の1のときの違いが何であるかを知りたい私PCは1.5秒で実行されますが、48秒でサーバーの実行は実行されますか?

+0

2つのMySQLホストから比較/分析する理由を知りたい場合は、SHOW GLOBAL STATUSを投稿してください。グローバル変数を表示する。 SHOW ENGINE INNODB STATUS:これは興味深い評価になります。 09/03/2017 –

答えて

1

3000/48はスピンドライブのスピード(I/Oあたり10msのルール)です。だから、innodb_flush_log_at_trx_commit=1のように聞こえます。

3000/1.5はSSDよりも音が良いので、ほとんどの書き込みをほとんど瞬間的に行うバッテリバックアップ書き込みキャッシュを備えたRAIDコントローラがあると思います。 1のセットを持つことは問題ありません。または、ドライブに書き込みキャッシュが有効になっている可能性があります。

+0

あなたの答えはありがとう! SSDドライブを使用し、私のサーバーはSAS VelociRaptor 600GB 10Kを使用しますが、スピードはなぜ1.5s vs 48sですか? –

+0

30倍速くなりますので、 "write cache"があると思います。 –

0

この値を1にすると、innodbがACIDに準拠するのに役立ちます。この値を1に設定すると、各トランザクションがコミットした直後にログバッファにログバッファが書き込まれます。しかし、innodb_flush_log_at_trx_commit = 0を設定した場合、同じことが毎秒1回実行されます。実際には、これが挿入時間が異なる理由が考えられます。デフォルトでは1に設定されています.2に設定すると、トランザクションがコミットされたときにログがファイルに書き込まれますが、ディスクへのフラッシュ操作は毎回実行されません。

+0

ありがとうございました!しかし、私の問題は、両方の仮想マシンが1に設定されている、私のPCで3000のクエリを実行する1.5とサーバーを実行すると3000のクエリを48秒に挿入し、私は理由を知りたい:( –

0

WHYは提供することによって決定できます。
VMホストのVMホストTOTAL RAMを共有する同様のアカウントのVM番号。そして、あなたの比較/分析のための2つのMySQLホスト、 GBでのRAMと

SHOW GLOBAL STATUS; 
SHOW GLOBAL VARIABLES; 
SHOW ENGINE INNODB STATUS: 

からこれは面白いな評価だろう。

+0

あなたの答えをありがとう!私のPCとサーバーの両方が1つのVMを持っています。私のPCの16ギガバイトのSSDの256G、サーバー128GBのRAMと2xSAS VelociRaptor 10kのRAID 1 600GB –

+0

比較と分析のためにあなたの2つのMySQLホストから投稿してください ショーグローバルステータス; グローバル変数を表示します。 SHOW ENGINE INNODB STATUS: これは興味深い評価です。 –

0

@Vuongミン私たちはあなたのHOSTSごとにWHYだけ

SHOW GLOBAL STATUS; 
SHOW GLOBAL VARIABLES; 
SHOW ENGINE INNODB STATUS; 

で決定することができます。あなたの質問にこの情報を追加することができますように願っています。

関連する問題