MySQL最適化の基礎
6538 ワード
Apache, PHP, mysql ,MySQL , 。 Discuz! ,MySQL , ! ,MySQL , MySQL , , 。
MySQL ,MySQL , , MySQL (my.cnf) 。
、 MySQL
① ( I/O), SCSI (7200 / ) , 7200 , , 。 MySQL 、 , 。 , I/O MySQL , 100 PV Discuz! , I/O ,MySQL ! : RAID-0+1 , RAID-5,MySQL RAID-5 。
②CPU MySQL , S.M.P. CPU, : Intel Xeon 3.6GHz CPU, 4U , mysql。
③ MySQL Database Server , 2GB, 4GB , , 16G。
、 MySQL
, MySQL 。 MySQL my.cnf 。 。 my.cnf , :
, my.cnf :
#vim /etc/my.cnf my.cnf [mysqld] , MySQL , 。
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
# MySQL , 。
skip-name-resolve
# MySQL DNS , MySQL DNS 。 , , IP , MySQL !
back_log = 384
#back_log MySQL 。 , , TCP/IP 。 。 back_log 。 50。 Linux 512 。
key_buffer_size = 256M
#key_buffer_size , 。 4GB 256M 384M。 : !
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M
# 。 : , 100 , 100 × 6 = 600MB。 , 4GB 6-8M。
read_buffer_size = 4M
# 。 sort_buffer_size , 。
join_buffer_size = 8M
# , sort_buffer_size , 。
myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M
# MySQL 。 MySQL , Qcache_lowmem_prunes , ; Qcache_hits , , , ;Qcache_free_blocks, , 。
tmp_table_size = 256M
max_connections = 768
# MySQL 。 Too Many Connections , 。
max_connect_errors = 10000000
wait_timeout = 10
# , 4GB 5-10。
thread_concurrency = 8
# CPU *2, , 2 CPU, CPU H.T , 4*2=8
skip-networking
# MySQL TCP/IP , WEB MySQL ! !
table_cache=1024
# , . 2402, 512-1024
innodb_additional_mem_pool_size=4M
# 2M
innodb_flush_log_at_trx_commit=1
# 0 innodb_log_buffer_size , 1
innodb_log_buffer_size=2M
# 1M
innodb_thread_concurrency=8
# CPU , 8
key_buffer_size=256M
# 218, 128
tmp_table_size=64M
# 16M, 64-256
read_buffer_size=4M
# 64K
read_rnd_buffer_size=16M
# 256K
sort_buffer_size=32M
# 256K
thread_cache_size=120
# 60
query_cache_size=32M
, myisam.
PS: myisam , , : T , pv , pv ,( memcached , 9 )。 0.5-1 。
MyISAM InnoDB :
key_buffer_size – MyISAM 。 MyISAM , 30-40%。 、 — ,MyISAM , , 。 , key_buffer — .MYI 1GB, key_buffer 4GB 。 。 MyISAM , 16-32MB key_buffer_size 。
innodb_buffer_pool_size – Innodb 。Innodb MyISAM 。MyISAM key_buffer_size , Innodb innodb_buffer_pool_size 。 Innodb , , Innodb 70-80% 。 key_buffer — , , innodb_buffer_pool_size 。
innodb_additional_pool_size – , 。 20MB( ), Innodb 。
innodb_log_file_size 。 , 。 64-512MB, 。
innodb_log_buffer_size , 。 , 。 , — , 1 。 8-16MB 。 。
innodb_flush_logs_at_trx_commit Innodb MyISAM 1000 ? 。 1, ( ) , , 。 , MyISAM , 2 , , 。 , 1-2 。 0 , — MySQL 。 2 。
table_cache — 。 MyISAM MYI 。 , , 。 , 。 200 , 1024 ( ), 。 100,000 。
thread_cache — , / 。 16。 Threads_Created , 。 。
query_cache — , , 。 , , MySQL 。 32-512Mb。 , 。 , , 。
sort_buffer_size – , , 64GB 。 。