2016-12-23 4 views
0

私は4GB/4T、8GBのRAMとSSDドライブを備えた専用サーバで動作する1GBのMySQL DBサイズを持っています。1G DB、8GB RAMのMySQL設定調整

私のウェブサイトは200.000以上の記事を持ち、検索機能(SELECTクエリ)を使用すると、WHMパネルからプロセスを強制終了するのに遅くなったり応答しなくなったりします。

私は今日私にmy.confファイルを表示するように頼んだので、私が見る通り、デフォルトで実行しています。ここでは、データがある:与えられた値で

max_connections = 150 
max_user_connections = 100 
query_cache_size = 64M 
skip-external-locking 
key_buffer_size = 64M 
max_allowed_packet=268435456 
table_open_cache = 256 
sort_buffer_size = 1M 
net_buffer_length = 16K 
read_buffer_size = 1M 
read_rnd_buffer_size = 1M 
myisam_sort_buffer_size = 32M 
innodb_file_per_table 
tmp_table_size = 64M 
max_heap_table_size = 64M 
thread_cache_size = 8 
query_cache_type = on 

# This setting allows the use of asynchronous I/O in InnoDB. 
# The following files track usage of this resource: 
# - /proc/sys/fs/aio-max-nr 
# - /proc/sys/fs/aio-nr 
# Default limit is 65536, of which a single instance of mysql uses 2661 out of the box 
innodb_use_native_aio = 1 
default_storage_engine = MyISAM 
open_files_limit=10000 

、私はinnodb_buffer_pool_sizeの存在が表示されていない、と尋ねサポートから男は私がmy.confに追加したいと思います。私はそれが重要な価値だと読んだので、おそらくそれは追加すべきでしょうか?

私のDBの中で最大のテーブルはInnoDBで、MyISAMはデフォルトのストレージエンジンです。

ここで推奨される設定と最適なパフォーマンスを得るために調整する必要がある値は何ですか?

innodb_buffer_pool_sizeまたはinnodb_log_file_sizeのようにmy.cnfで定義する必要があるものはありますか?

+1

ほとんどの場合、問題は設定ファイルに関連していません。私はあまりにも長いSQLクエリを見て、EXPLAINコマンドを実行します。一部の索引が欠落している可能性があり、その結果、全表スキャンが行われます。 2番目によくあるエラーは、fetchall()またはそれと同等の機能を使って大きなSELECT結果セット全体をRAMに一度に読み込むことです。 –

+0

@MikeBessonovクエリは、検索機能が実際の検索を実行するために必要な方法です。私はいくつかのクエリでLIKEの代わりにFULLTEXTを使うことができますが、それは私のサイトの検索の重要な部分であるワイルドカードを失う原因になります。そのため、パフォーマンスの向上を図るためにデータベース構成をプッシュすることは、サイトのパフォーマンス全体に影響を与えることは間違いありません。 –

+0

実行に時間がかかりすぎるSQLクエリを特定できますか? –

答えて

1

あなたは、「パフォーマンスの問題のうちチューンあなたの方法を」することはできませんが、ここで変更する設定は次のとおりです。

key_buffer_size = 800M 
innodb_buffer_pool_size = 1500M 

はInnoDBテーブルはMyISAMのに好適です。 (変更すると、さらに変更が必要になります)

どのバージョンをお使いですか?

通常、パフォーマンスはインデックスとクエリの定式化によって異なります。遅いクエリをテーブルのSHOW CREATE TABLEと一緒に見てみましょう。

0.0002secは、クエリキャッシュで見つかったような音です。実行時間をSELECT SQL_NO_CACHE ...とすると、非現実的な量を避けることができます。 MyISAMテーブルに

0

key_buffer_sizeはは=物理的RAMメモリの20%〜30%であるべきです。あなたの8 GBのRAMに従って計算してください。

私は

第1のInnoDBのためにMYSQLのエンジンを変更するには、あなたをお勧めします。なぜなら、インデックスの不足やクエリの最適化のあなたのクエリが遅いです。クエリのEXPLAIN計画を使用し、インデックスをテーブルに追加して最適化します。

関連する問題