私は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で定義する必要があるものはありますか?
ほとんどの場合、問題は設定ファイルに関連していません。私はあまりにも長いSQLクエリを見て、EXPLAINコマンドを実行します。一部の索引が欠落している可能性があり、その結果、全表スキャンが行われます。 2番目によくあるエラーは、fetchall()またはそれと同等の機能を使って大きなSELECT結果セット全体をRAMに一度に読み込むことです。 –
@MikeBessonovクエリは、検索機能が実際の検索を実行するために必要な方法です。私はいくつかのクエリでLIKEの代わりにFULLTEXTを使うことができますが、それは私のサイトの検索の重要な部分であるワイルドカードを失う原因になります。そのため、パフォーマンスの向上を図るためにデータベース構成をプッシュすることは、サイトのパフォーマンス全体に影響を与えることは間違いありません。 –
実行に時間がかかりすぎるSQLクエリを特定できますか? –