由于本人使用的mysql服务器一般都是只采用innodb引擎,并希望配置能尽量大的提高性能,每次设置都要去百度搜索比较多篇文章再结合设置,于是自己提取了一些常用的配置项方便使用。
1,最大连接数max_connections
--------------------------------------------------
默认为100,一般设置为1000-2000合适一些。
max_connections=2000
2,concurrent_insert参数
--------------------------------------------------
默认为1,一般也为1,如果写操作锁表比较严重,同时对于存储硬盘空间允许有碎片,可以设置为2.
concurrent_insert=1
3,innodb_buffer_pool_size
--------------------------------------------------
默认8M。如果数据库采用innodb表,修改此值非常重要。由于Innodb把数据和索引都缓存起来,无需留给操作系统太多的内存,因此如果只需要用Innodb的话则可以设置它高达 70-80% 的可用内存。
innodb_buffer_pool_size = 24G
4,innodb_flush_log_at_trx_commit
--------------------------------------------------
默认值是1。意味着每次提交的更新事务(或者每个事务之外的语句)都会刷新到磁盘中,而这相当耗费资源,尤其是没有电池备用缓存时。很多应用程序,尤其是从 MyISAM转变过来的那些,把它的值设置为 2 就可以了,也就是不把日志刷新到磁盘上,而只刷新到操作系统的缓存上。日志仍然会每秒刷新到磁盘中去,因此通常不会丢失每秒1-2次更新的消耗。如果设置为 0 就快很多了,不过也相对不安全了。MySQL服务器崩溃时就会丢失一些事务。设置为 2 指挥丢失刷新到操作系统缓存的那部分事务。
innodb_flush_log_at_trx_commit=2
5,table_cache
---------------------------------------------------
默认值是64。为所有线程打开表的数量,当 Mysql 访问一个表时,如果该表在缓存中已经被打开,则可以直接访问缓存;如果表还没有被缓存,但是在 Mysql 表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区。增加该值能增加mysqld要求的文件描述符的数量。MySQL对每个唯一打开的表需要2个文件描述符。可把它改为512。
open_files_limit=10240
table_cache=512
6,thread_cache_size
---------------------------------------------------
默认是8。可以复用的保存在中的线程的数量。如果有,新的线程从缓存中取得,当断开连接的时候如果有空间,客户的线置在缓存中。如果有很多新的线程,为了提高性能可以这个变量值。通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用,一般(Connections-Threads_created)/Connections应该在90%以上。初步可以把它设置为 256,以后识情况调整。
thread_cache_size=256
7,skip-name-resolve
---------------------------------------------------
禁止MySQL对外部连接进行DNS解析,使用这一选项可以消除MySQL进行DNS解析的时间。但需要注意,如果开启该选项,则所有远程主机连接授权都要使用IP地址方式,否则MySQL将无法正常处理连接请求!关闭后,本地localhost依然可以正常使用。
skip-name-resolve
8,back_log
---------------------------------------------------
指定MySQL可能的连接数量。当MySQL主线程在很短的时间内接收到非常多的连接请求,该参数生效,主线程花费很短的时间检查连接并且启动一个新线程。back_log参数的值指出在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中。如果系统在一个短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的侦听队列的大小。不同的操作系统在这个队列大小上有它自己的限制。试图设定back_log高于你的操作系统的限制将是无效的。默认值为50。对于Linux系统推荐设置为小于512的整数。
back_log=256
9,max_allowed_packet
---------------------------------------------------
设置最大包,限制server接受的数据包大小,避免超长SQL的执行有问题 默认值为16M,当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与MySQL服务器的连接”错误。默认值16M。
max_allowed_packet=32M
10,sort_buffer_size
---------------------------------------------------
默认2M, sort_buffer_size 并不是越大越好,由于是connection级的参数,过大的设置+高并发可能会耗尽系统内存资源。例如:500个连接将会消耗 500*sort_buffer_size(8M)=4G内存
sort_buffer_size=8M
11,join_buffer_size
---------------------------------------------------
用于表间关联缓存的大小,默认128k。
join_buffer_size=1M
12,transaction_isolation
---------------------------------------------------
设定默认的事务隔离级别.可用的级别如下:
READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
1.READ UNCOMMITTED-读未提交2.READ COMMITTE-读已提交3.REPEATABLE READ -可重复读4.SERIALIZABLE -串行
transaction_isolation=READ-COMMITTED
13,tmp_table_size
---------------------------------------------------
tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。
tmp_table_size=256M
14,innodb_log_buffer_size
---------------------------------------------------
默认1M,此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据.MySQL开发人员建议设置为1-8M之间。
innodb_log_buffer_size=8M
15,innodb_log_file_size
---------------------------------------------------
此参数确定数据日志文件的大小,以M为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间
innodb_log_file_size=128M
16,错误日志
---------------------------------------------------
错误日志文件包含了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。
配置方法:
log-error="log/error.log"
17,二进制日志
---------------------------------------------------
二进制日志包含了所有更新了数据或者已经潜在更新了数据的所有语句。语句以“事件”的形式保存,它描述数据更改。
配置方法:
log-bin="log/bin/bin.log"
18,慢查询日志
---------------------------------------------------
慢查询日志可以用来找到执行时间长的查询,可以用于优化。
配置方法:
log-slow-queries="log/slow_query.log"
long_query_time=1