机器硬件: 

双核Linux2.6.9-42.ELsmp i686 i686 i386 GNU/Linux 

mysql Ver 14.7 Distrib 4.1.20, for redhat-linux-gnu (i386) using readline 4.3 


shell > cat /etc/my.cnf 


[client] 

#password = your_password 

port = 3306 

socket = /tmp/mysql.sock 


[mysqld] 

port = 3306 

socket = /tmp/mysql.sock 


skip-innodb 


##禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注#意,如果开启该选项,则所有远程主机##连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求! 

skip-name-resolve 


#避免MySQL的外部锁定,减少出错几率增强稳定性 

skip-locking 



#开启该选项可以彻底关闭MySQL的TCP/IP连接方式,如果WEB服务器是以远程连接的方式访问MySQL数据库服务器则不要开启该选项! 

#否则将无法正常连接! 

#skip-networking ###需要远程传输数据,需要屏蔽 

###skip-bdb ###这个参数在机器上一用就报错 


key_buffer = 640M 

### 如果只用MyISAM表,那么设成可用内存的30%到40%。如果用的MySIAM表很少, 

##那么可以把它设得比较少,但至少要有16-32M 



#########key_buffer_size只对MyISAM表起作用 

# key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好的索引处理性能。 

#注意:该参数值设置的过大反而会是服务器整体效率降低! 

####key_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。一般我们设为16M,实际上稍微大一点的站点  

####这个数字是远远不够的,通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低, 

###至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。 或者如果你装了phpmyadmin 可以通过服务器运行状态看到,笔者推荐用phpmyadmin管理mysql, 

###key_buffer_size – 128M 

###key_read_requests – 650759289 

###key_reads - 79112 

###比例接近1:8000 健康状况非常好 

key_buffer_size=512M ###太大MYSQL起不来 , 设为 15% 



#联合查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内存也是每连接独享! 

join_buffer_size=8M 


sort_buffer=32M ### new 

record_buffer=32M ###new 


max_allowed_packet = 4M 


#指定MySQL允许的最大连接进程数。如果经常出现Too Many Connections的错误提 示,则需要增大该参数值。 

max_connections=32000 ###new 

max_connect_errors=30000 ###new 


###对于200个表的运用1024比较好,我的表很多,设为10倍 

table_cache = 10240 


#查询排序时所能使用的缓冲区大小。注意:该参数对应的分配内存是每连接独占!如果有100个连接, 

#那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB。所以,对于内存在4GB左右的服务器推荐设置为6-8M。 

sort_buffer_size = 6M 


#读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享! 

read_buffer_size = 4M 


read_rnd_buffer_size = 8M 



myisam_sort_buffer_size = 128M 


###建立连接和断开时的线程的创建和死亡开销很大。我一般把它设为至少16。如果程序中有大量并发连接, 

###而变量Threads_Created(status中可以看到)长得很快,那么会设大一些。 

###主要是让正常操作中不要去创建线程 

thread_cache=32 #大量并发连接 

thread_cache_size = 128 



#指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察: 

# > SHOW VARIABLES LIKE '%query_cache%'; 

# > SHOW STATUS LIKE 'Qcache%'; 

# 如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况; 

#如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;#Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多。 

query_cache_size = 512M ##32M-512M就可以 


query_cache_type=1 


long_query_time=1 ### new 

max_heap_table_size=256M ###new 

tmp_table_size=256M ### new 



#指定MySQL可能的连接数量。 

#当MySQL主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。 

#back_log 参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果系统在一个短时间内有很多连 

#接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。 

#试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。 

back_log=384 


#指定一个请求的最大连接时间,对于4GB左右内存的服务器可以设置为5-10 

wait_timeout=120 

interactive_timeout=120 


#local-infile=0 ### 当使用本地导库时 'Load Data Local infile ...' 需要屏蔽 



#该参数取值为服务器逻辑CPU数量×2,在本例中,服务器有2颗物理CPU,而每颗物理CPU又支持H.T超线程,所以实际取值为4 × 2 = 8 

thread_concurrency = 8 


# Replication Master Server (default) 

# binary logging is required for replication 

#####log-bin=mysql-bin ### 屏蔽日志 



server-id = 1 



# 

thread_stack=256K 

##thead_cache_size=64 #此参数加入后,MYSQL运行不了 



[mysqldump] 

quick 

max_allowed_packet = 16M 


[mysql] 

no-auto-rehash 

# Remove the next comment character if you are not familiar with SQL 

#safe-updates 


[isamchk] 

key_buffer = 256M 

sort_buffer_size = 256M 

read_buffer = 2M 

write_buffer = 2M 


[myisamchk] 

key_buffer = 256M 

sort_buffer_size = 256M 

read_buffer = 2M 

write_buffer = 2M 


[mysqlhotcopy] 

interactive-timeout 


### END