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 。 。