MYSQL在LINUX机器(4G内存)配置参数

本文详细介绍MySQL配置文件my.cnf中的各项参数设置,包括提高查询性能的关键参数如key_buffer_size、join_buffer_size等,以及如何根据服务器硬件调整这些参数以达到最佳效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值