mysql性能优化-配置参数优化

来源:互联网 发布:tensorflow ocr 编辑:程序博客网 时间:2024/05/23 16:53

mysql 性能优化的主要包括:配置参数优化、sql优化、业务架构优化。

my.cnf中的配置参数调优取决于业务,负载或硬件,在慢内存和快磁盘、高并发和写密集型负载情况下,都需要特殊的调整。


基本优化的参数包括:query_cache_size,innodb_buffer_pool_size,innodb_log_file_size,innodb_log_buffer_size等。


innodb_buffer_pool_size

    innodb_buffer_pool_size参数表示缓冲池字节大小,InnoDB缓存表和索引数据的内存区域。mysql默认的值是128M在32位操作系统中,CPU和操作系统实用的最大大小低于设置的最大值。如果设定的缓冲池的大小大于1G,设置innodb_buffer_pool_instances的值大于1,在服务器繁忙的时候可以提高伸缩性,不过在实际的测试中,发现带来的性能提升并不明显,一般情况下可以设置为物理内存的80%左右,典型5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。


查看参数配置

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';


innodb_log_buffer_size

 innodb_log_buffer_size表示InnoDB写入到磁盘上的日志文件时使用的缓冲区的字节数,默认值为8M。一个大的日志缓冲区允许大量的事务在提交之前不写日志到磁盘。因此,如果你有很多事务更新,插入或删除很操作,通过这个参数会大量节省了磁盘I / O,一般设置为8-16M


innodb_log_file_size

redo 日志被用于确保写操作快速而可靠并且在崩溃是恢复,在MySQL 5.6里最大可以设置为512G
推荐是物理内存的50%-80%,但具体设置还是要根据具体情况而设定。


sort_buffer_size

设定查询排序所使用的缓冲区大少,系统默认大少为2MB,该参数  对应的分配内在是每个连接独占的,如果有100个连接,那么实际分配的总排序缓冲区大小为100*6=600MB,那么对于内存4GB左右的服务器来说,推荐将其设置为6MB-8MB。

  read_buffer_size=4M 
读查询操作所能使用的缓冲区大小,和sort_buffer_size一样,该参数对应的分配内在也是每个连接独享 。


 thread_cache_size

设置Thread Cache池中可以缓存的连接池线程最大数量,可设置为0-16384,默认为0。1GB内存我们配置为8,2GB内存我们配置为16,4GB或4GB以上内在我们配置为64。


tmp_table_size

设置内在临时表最大值,如果超过该值,则会将临时表写入磁盘,其范围为1KB至4GB


max_connections

指定MYSQL允许的最大连接进程数,如果在访问程序时经常出现TOO MANY CONNECTIONS的错误提示,则需要增大该参数值。


thread_concurrency

  该参数取值为服务器逻辑CPU数量*2,比如,服务器有两个物理CPU,每个物理CPU支持HT超线程,所以实际取值4*2=8,这也是目前双四核主流  服务器的配置。 


max_allowed_packet

SQL语句是有长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packet配置可以修改,默认是1M,测试时修改为8M。

0 0
原创粉丝点击