一.引言
经过优化MySQL的参数能够提升资源利用率,从而达到提升MySQL服务器性能的目的。MySQL服务的配置参数都在my.cnf或者my.ini的文件中。sql
二.参数配置
2.1 key_buffer_size
key_buffer_size:表示索引缓冲区的大小。索引缓冲区全部的线程共享,增长索引缓冲区能够获得更好的处理索引(对全部读和多重写)。固然,这个值也不是越大越好,它的大小取决于内存的大小,若是这个值太大,致使操做系统频繁换页,也会下降系统性能。数据库
2.2 table_cache
table_cahce:表示同时打开表的个数,这个值越大,可以同时打开的表的个数越多。这个值不是越大越好,由于同时打开的表太多致使影响操做系统的性能。缓存
2.3 query_cache_size
query_cache_size:表示查询缓冲区的大小,该参数须要和query_cache_type进行配合使用。安全
query_cache_type:0,全部的查询都不使用查询缓冲区,可是query_cache_type为0,并不会致使MYSQL释放query_cache_size所配置的缓冲区内存。服务器
query_cache_type:1,全部的查询都将使用查询缓冲区,除非在查询语句中指定SQL_NO_CACHE,如:select sql_no_cahce * from table1。性能
query_cache_type:2,只有在查询语句中使用SQL_CACHE关键字,查询才会使用查询缓冲区。优化
使用查询缓冲区能够提升查询的速度,这种方式只适用于修改操做少且常常执行相同的查询操做的时候。spa
2.4 sort_buffer_size
sort_buffer_size:表示排序缓存区的大小,这个值越大,进行排序的速度越快。操作系统
2.5 read_buffer_size
read_buffer_size:表示每一个线程连续扫描时为每一个表分配的缓冲区大小(byte)。当线程从表中连续读取记录时须要用到这个缓冲区。线程
2.6 read_rnd_buffer_size
read_rnd_buffer_size:表示为每一个线程保留的缓冲区的大小,与read_buffer_size类似,但主要用于存储按特定顺序读取出来的记录。若是须要频繁进行屡次连续扫描,能够增长该值。
2.7 innoDB_buffer_pool_size
innoDB_buffer_pool_size:表示innodb类型表和索引的最大缓存,这个值越大,查询的速度越快,可是这个值太大会影响操做系统的性能。
2.8 max_connections
max_connections:表示数据库的最大链接数,这个链接数不是越大越好,由于这些链接会浪费内存的资源。过多的链接会致使MYSQL服务器僵死。
2.9 innoDB_flush_log_at_trx_commit
innoDB_flush_log_at_trx_commit:表示什么时候将缓冲区的数据写入日志文件,而且将日志文件写入磁盘中。该参数对于innoDB引擎很是重要。该参数有三种不一样的值。
0:表示每隔1秒将数据写入日志,并将日志文件写入磁盘。
1:表示每次提交事务的时候将数据写入日志,并将日志文件写入磁盘。
2:表示每次提交事务的时候将数据写入日志,每隔1秒将日志文件写入磁盘。
该参数默认为1,默认为1时,安全性最高,可是每次提交事务或事务外的指令都须要把日志写入磁盘,比较费时间。参数为0的话,安全性不是很好。为2时,日志仍会每秒写入到磁盘,全部即便出现故障,通常也不会丢失超过1~2秒的更新。
2.10 back_log
back_log:表示在MYSQL暂时中止回答新请求以前的短期内,多少个请求能够被存在堆栈中,换句话说,该值表示对到来的TCP/IP链接的侦听队列的大小。只有指望在一个短期内有不少的链接,才须要增长该参数的值。操做系统在这个队列的大小也有限制,设定back_log高于操做系统的限制将是无效的。
2.11 interactive_timeout
interactive_timeout:表示服务器在关闭链接前等待行动的秒数。
2.12 sort_buffer_size
sort_buffer_size:表示每一个须要进行排序的线程分配的缓冲区的大小。增长这个参数的值能够提升order by 或group by 操做的速度。
2.13 thread_cache_size
thread_cache_size:表示能够复用的线程的数量,若是有不少的新的线程,为了提升性能能够增大该值。
2.14 wait_timeout
wait_timeout:表示服务器在关闭一个链接时,等待行动的秒数。