MySQL性能优化之参数配置

1.目的

通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能

2.服务器参数

32G内存、4个CPU,每个CPU 8核

centos 7

3.修改MySQL配置

打开MySQL配置文件my.cnf

1
vi /etc/my.cnf

修改back_log参数值:由默认的50修改为500

1
back_log=500

修改back_log参数值:由默认的50修改为500

1
2
3
back_log=500
back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。

修改wait_timeout参数值

1
2
3
wait_timeout=1800(单位为妙)
wait_timeout是MySQL客户端的数据库连接闲置最大时间值。

修改max_connections参数值

1
2
3
max_connections=3000(单位为妙)
max_connections是指MySql的最大连接数,如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量

修改max_user_connections值,由默认的0,修改为800

1
2
3
max_user_connections=800
max_user_connections是指每个数据库用户的最大连接,设置为0表示不限制

修改thread_concurrency值,由目前默认的8,修改为64

1
2
3
4
5
thread_concurrency=64
thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那thread_concurrency
的应该为4; 2个双核的cpu, thread_concurrency的值应为8.

default-storage-engine(设置MySQL的默认存储引擎)

1
default-storage-engine= InnoDB(设置InnoDB类型,另外还可以设置MyISAM类型)

4、demo示例

[mysqld]
basedir = path # 使用给定目录作为根目录(安装目录)。
datadir = path # 从给定目录读取数据库文件。
pid-file = filename # 为mysqld程序指定一个存放进程ID的文件(仅适用于UNIX/Linux系统);

socket = /tmp/mysql.sock # 为MySQL客户程序与服务器之间的本地通信指定一个套接字文件(Linux下默认是/var/lib/mysql/mysql.sock文件)
port = 3306 # 指定MsSQL侦听的端口
key_buffer = 384M # key_buffer是用于索引块的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写)。
索引块是缓冲的并且被所有的线程共享,key_buffer的大小视内存大小而定。
table_cache = 512 # 为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。可以避免频繁的打开数据表产生的开销
sort_buffer_size = 2M # 每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。
注意:该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100×6=600MB
read_buffer_size = 2M # 读查询操作所能使用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是每连接独享。
query_cache_size = 32M # 指定MySQL查询结果缓冲区的大小
read_rnd_buffer_size = 8M # 改参数在使用行指针排序之后,随机读用的。
myisam_sort_buffer_size = 64M # MyISAM表发生变化时重新排序所需的缓冲
thread_concurrency = 8 # 最大并发线程数,取值为服务器逻辑CPU数量×2,如果CPU支持H.T超线程,再×2
thread_cache = 8 # #缓存可重用的线程数
skip-locking # 避免MySQL的外部锁定,减少出错几率增强稳定性。

[mysqldump]
max_allowed_packet = 16M # 服务器和客户端之间最大能发送的可能信息包

[myisamchk]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M

back_log = 384