[mysqld]

default-storage-engine = myisam 存储引擎设置myisam性能高,但是不宜处理大的数据,

占用资源少,innodb有事物处理高级功能,占用资源大

datadir=/var/lib/mysql 数据库所在的路径

socket=/var/lib/mysql/mysql.sock 套接字路径

old_passwords=1 兼容4.1版本之前的hash密码

max_connections = 1000 最大连接数目,mysql会保留一个管理员的连接,所以最大连接数目实际

为max_connections + 1,该变量的最大值为16384,增加这个参数的值不会太占用系统的资源

max_connect_errors=1000 默认值为10,客户端尝试连接此MySQL服务器,但是失败(如密码错误等等)1000次,则MySQL会无条件强制阻止此客户端连接,防止暴力破解密码.

max_allowed_packet=61457280 发送最大包的值,默认值为1048576Byte(1M).

max_length_for_sort_data=8096 默认值为1024,设定一个触发使用双路排序的值,不足这个值的 ord by 排序使用单路排序

delayed_insert_timeout=300 设置延迟插入的超时时间,默认值300,若在指定的时间内没有插入,则终止插入


table_open_cache=356 限制缓存表的最大数目,默认值为64,5.1.3版本之前叫table_cache

show global status like 'open%_tables';可以看到Open_tables和Opened_tables的值

Open_tables / Opened_tables >= 0.85
Open_tables / table_cache <= 0.95

这个值至少要大于等于max_connections吧,图中的明显有问题.

mysql配置文件详解_cnf


sort_buffer_size=2M 系统默认大小时2MB,是针对单个线程的,所以当多个线程同时进行排序的时候,系统中就会出现多个sort buffer。我们一般可以通过增大sort buffer的大小来提高order by或者group by的处理性能。


key_buffer_size=264M 索引区块的RMA值,为更好的处理索引,对于所有线程的.

mysql key_buffer_size是对MyISAM表性能影响最大的一个参数(注意该参数对其他类型的表设置无效)


mysql配置文件详解_cnf_02

Key_read_requests:表示总共的索引请求次数
Key_reads:从硬盘读取索引的请求次数
key_cache_miss_rate = Key_reads / Key_read_requests * 100%
这个miss当然是越小越好,增大key_buffer_size的大小可以减小,这个key_cache_miss_rate的值


read_buffer_size=50M

这部分内存主要用于当需要顺序读取数据的时候,如无发使用索引的情况下的全表扫描,全索引扫描等。在这种时候,MySQL按照数据的存储顺序依次读取数据块,每次读取的数据快首先会暂存在read_buffer_size中,当 buffer空间被写满或者全部数据读取结束后,再将buffer中的数据返回给上层调用者,以提高效率。


join_buffer_size=128k  默认为128k

应用程序经常会出现一些两表(或多表)Join的操作需求,MySQL在完成某些 Join 需求的时候(all/indexjoin),为了减少参与Join的“被驱动表”的读取次数以提高性能,需要使用到 Join Buffer 来协助完成 Join操作。当 Join Buffer 太小,MySQL 不会将该 Buffer 存入磁盘文件,而是先将Join Buffer中的结果集与需要 Join的表进行 Join 操作,然后清空 Join Buffer 中的数据,继续将剩余的结果集写入此 Buffer中,如此往复。这势必会造成被驱动表需要被多次读取,成倍增加 IO 访问,降低效率。


tmp_table_size=100M 

当我们进行一些特殊操作如需要使用临时表才能完成的Order By,Group By 等等,MySQL 可能需要使用到临时表,太小的话,临时表就只能写到硬盘上了.

 

max_heap_table_size=100M

这个变量定义了用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值。这个变量支持动态改变,即set @max_heap_table_size=#

,但是对于已经存在的内存表就没有什么用了,除非这个表被重新创建(create table)或者修改(alter table)或者truncate table。服务重启也会设置已经存在的内存表为全局max_heap_table_size的值。

这个变量和tmp_table_size一起限制了内部内存表的大小


myisam_sort_buffer_size=50M 重建索引时,允许最大临时文件的大小,默认8M

query_cache_size=64M 设置查询缓冲的大小,默认为0.


query_cache_type = 1
查询结果写入缓存。这里可以设置三种值 0 , 1,2 ,其中 0 表示关闭缓存,也就是查询结构不写入缓存, 1 是写入, 2 是 demand 。但是事实证明,只要不关闭,查询就会先去缓存中找。


skip-name-resolve 禁用反解析,即根据ip查找域名,禁止可以提高响应.

ft_min_word_len = 1开启全文搜索,预先对于全站内容进行索引,默认为4

character-set-server=utf8 设定使用的字符编码服务

log-bin=mysql-binf 设置二进制日志的开头名

expire-logs-days=3 设置日志过期时间

binlog_format = statement 设置 binlog_format 的模式, statement 表示记录每一个 sql 修改。若设置为 =row ,则表示记录修改的行,另外还可以设置为 mixedlevel ,为两者混合模式,在执行主从复制时使用 row 进行主从复制,在进行数据普通修改的时候进行 statement 复制。

server-id=1





#query

long_query_time=30 判断为慢查询的时间,默认值为10s,记录超过30s的sql执行语句

slow_query_log_file=/var/log/mysql_slow.log 设定慢查询的日志文件

slow_query_log=on 开启慢查询

slow_query_log_timestamp_precision = microsecond 为判定为慢查询的语句打上时间戳

log-slow-queries = /var/log/mysql_slow.log 慢查询语句判定之后存放的位置


log_error = /var/log/mysqld.log 存放错误日志的位置

slave_load_tmpdir = /data/mysql_tmp_no_del 从服务器引导临时文件

tmpdir = /backup/mysql_tmp_no_del 临时文件目录


[mysqld_safe]

pid-file=/var/lib/mysql/mysqld.pid 指定存放 PID 的文件