非常に大量のmysqlデータベースサーバーのmy.cnfファイルを最適化するための助けを誰かが提供できることを期待しています。MySQLのmy.cnfパフォーマンスチューニングの推奨事項
Our architecture is as follows:
Memory : 96GB
CPUs : 12
OS & Mysql : 64-bit
Disk Space : 1.2 TB
DB Engine : MyISAM
私たちのWebアプリケーションは、約300のクライアントで同時に使用されます。このインフラストラクチャのパフォーマンスを最大限に引き出すために、my.cnfを調整する必要があります。
私はインデックスと最適化されたクエリがこれの主な要因であることを十分に認識していますが、適切に設定されたシステムから始めて、それに応じてクエリを体系的に再エンジニアリングしてください。
Here is our current my.cnf file content:
[mysqld]
datadir=/home/mysql
socket=/home/mysql/mysql.sock
user=mysql
log-bin=mysql-bin
server-id=1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=1
log-slow-queries = /var/log/mysqld_slow_queries.log
long_query_time = 10
max_connections = 500
key_buffer_size = 32768M
#max_allowed_packet = 2M
#table_open_cache = 128
#sort_buffer_size = 1024K
#net_buffer_length = 64K
#read_buffer_size = 1024K
#read_rnd_buffer_size = 1024K
#myisam_sort_buffer_size = 8M
query_cache_size = 128M
query_cache_limit = 128M
interactive_timeout = 300
wait_timeout = 300
# Added values after load testing
thread_cache_size = 8
#tmp_table_size = 256M
#max_heap_table_size = 256M
#table_cache = 512
#join_buffer_size = 512
log-error=/var/log/mysqld.log
innodb_buffer_pool_size=128M
#innodb_file_per_table
#innodb_log_file_size=250M
##innodb_buffer_pool_size=64M
#innodb_buffer_pool_size=1024M
#innodb_log_buffer_size=4M
##log-bin=mysql-bin
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#[myisamchk]
#key_buffer = 64M
#sort_buffer = 64M
#read_buffer = 16M
#write_buffer = 16M
お勧めはありますか? ありがとうございました。 RolandoMySQLDBA
によって
編集は、すべてのあなたのデータは、MyISAMテーブルであるので、このクエリを実行し、出力にローランド@
SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables
WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql')) AA) A,
(SELECT 3 PowerOf1024) B;
を表示してください - おかげで...そのクエリの結果が4Gでした。
あなたの現在の設定に基づいて特定の遅さを経験していますか? – Randy
これはほんの300人のWebユーザーのための非常に良いマシンです。さらにこれが単なるDBサーバーの場合は..このWindowsまたはLinuxですか?どちらの方法でも、私は一般に、OS /スワップとデータボリューム(datadirが存在する場所)に別々のディスク/ LUNを持つことをお勧めします。ソフトウェアの侵入などを避けてください。この設定を調整するのに役立つ「mk-query-advisor」というツールがあります。あなたの 'フロントエンド'アプリケーションが(静的なデータをキャッシュし、必要な時だけ照会するなど)適切なことをしていない限り、チューニングはあまり買わないかもしれません。 – JMC
また、最適化を維持するために、毎週 'OPTIMIZE TABLE tbl_name'を呼び出す保守スクリプト(バックアップ後)を追加することもできます。また、大きなテーブルなどを分割することも検討してください。 – JMC