优化MySQL服务器

Posted 小王子的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化MySQL服务器相关的知识,希望对你有一定的参考价值。

一.引言

通过优化mysql的参数可以提高资源利用率,从而达到提高MySQL服务器性能的目的。MySQL服务的配置参数都在my.cnf或者my.ini的文件中。

二.参数配置

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关键字,查询才会使用查询缓冲区。

        使用查询缓冲区可以提高查询的速度,这种方式只适用于修改操作少且经常执行相同的查询操作的时候。

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:表示服务器在关闭一个连接时,等待行动的秒数。

 

以上是关于优化MySQL服务器的主要内容,如果未能解决你的问题,请参考以下文章

Mysql的性能优化

MySQL Optimization

4G内存服务器的MySQL配置优化

MySQL优化MySQL 高并发配置优化基础知识

MySQL优化MySQL 高并发配置优化基础知识

转载mysql数据库配置优化