为它分配一端内存缓冲区,如果对表的顺序扫描请求非常频繁,并且认为频繁扫描进行太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。read_buffer_size = 1M
随机读缓冲区大小,当按任意顺序读取行时,将分配一个随机读缓冲区,进行排序查询是,mysql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但mysql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,避免内存开销过大。read_rnd_buffer_size = 16M
bulk_insert_buffer_size = 64M 批量插入数据缓存大小,可以有效提高插入效率,默认为8M
binary log
log-bin=/usr/local/mysql/data/mysql-bin
binlog_cache_size = 2M //为每个session 分配的内存,在事务过程中用来存储二进制日志的缓存, 提高记录bin-log的效率。没有什么大事务,dml也不是很频繁的情况下可以设置小一点,如果事务大而且多,dml操作也频繁,则可以适当的调大一点。前者建议是--1M,后者建议是:即 2--4M
max_binlog_cache_size = 8M //表示的是binlog 能够使用的最大cache 内存大小
max_binlog_size= 512M //指定binlog日志文件的大小,如果当前的日志大小达到max_binlog_size,还会自动创建新的二进制日志。你不能将该变量设置为大于1GB或小于4096字节。默认值是1GB。在导入大容量的sql文件时,建议关闭sql_log_bin,否则硬盘扛不住,而且建议定期做删除。
expire_logs_days = 7 //定义了mysql清除过期日志的时间。
二进制日志自动删除的天数。默认值为0,表示“没有自动删除”。
mysqladmin flush-logs 也可以重新开始新的binarylog
在优化之前执行mysqlslap工具进行测试
[root@localhost ~]#mysqlslap--defaults-file=/etc/my.cnf --concurrency=10 --iterations=1--create-schema='test1' --query='select * from test1.tb1' --engine=innodb--number-of-queries=2000 -uroot -p123456 –verbose
显示结果:
Benchmark
Runningfor engine innodb
Averagenumber of seconds to run all queries: 13.837 seconds
Minimumnumber of seconds to run all queries: 13.837 seconds
Maximumnumber of seconds to run all queries: 13.837 seconds
Numberof clients running queries: 10
Averagenumber of queries per client: 200
优化之后执行mysqlslap工具进行测试
[root@localhost ~]#mysqlslap --defaults-file=/etc/my.cnf--concurrency=10 --iterations=1 --create-schema='test1' --query='select * fromtest1.tb1' --engine=innodb --number-of-queries=2000 -uroot -p123456 –verbose
显示结果:
Benchmark
Runningfor engine innodb
Averagenumber of seconds to run all queries: 4.199 seconds
Minimumnumber of seconds to run all queries: 4.199 seconds
Maximumnumber of seconds to run all queries: 4.199 seconds
Numberof clients running queries: 10
Averagenumber of queries per client: 200