下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

巧用InnoDB配置参数提高MySQL性能

作者:课课家     来源: http://www.kokojia.com点击数:823发布时间: 2019-02-28 10:46:49

标签: 考试认证等级考试MySQL

软考,您想通过吗?一次通过才是硬道理

  众所周知InnoDB是MySQL的一个数据库引擎。InnoDB和传统的ISAM与MyISAM相比,其最大特色就是支持了ACID兼容的事务(Transaction)功能。在实际的管理MySQL数据库的过程中如果我们运用好InnoDB的配置参数将有效提高MySQL的性能。在本篇文章中课课家笔者就此向大家详细介绍一些能够提高MySQL性能的参数以供大家参考参考。

巧用InnoDB配置参数提高MySQL性能_考试认证_等级考试_MySQL_课课家

 


 

  innodb_additional_mem_pool_size

  除了缓存表数据和索引外,可以为操作所需的其他内部项分配缓存来提升InnoDB的性能,而这些内存就可以通过此参数来分配。笔者在这里推荐大家在设置此参数时至少设置为2MB,实际上设置缓存的大小是需要根据项目的InnoDB表的数目相应地增加的。

  


 

  innodb_data_pool_size

  这个参数类似于MySQL的key_buffer参数但特定用于InnoDB表。这个参数确定了要预留多少内存来缓存表数据和索引。和key_buffer一样,更高的设置会提升性能,通常可以是服务器的内存70-80%。

  


 

  innodb_data_file_path

  这个参数的名字和实际的用途有点出入,它不仅指定了所有InnoDB数据文件的路径,还指定了初始大小分配,最大分配以及超出起始分配界线时是否应当增加文件的大小。通常此参数的一般格式如下所示:

  ● path-to-datafile:size-allocation[:autoextend[:max-size-allocation]]

  举个例子,比如我们希望创建一个数据文件sales,初始大小为100MB并希望在每次达到当前大小限制时自动增加8MB(8MB是指定autoextend时的默认扩展大小)。但是不希望此文件超过1GB。为此我们可以通过使用以下配置来实现:

  ● innodb_data_home_dir =

  ● innodb_data_file_path = /data/sales:100M:autoextend:8M: max:1GB

  若这个文件增加到预定的1G的限制,我们则可以再增加另外一个数据文件,具体的配置如下所示:

  ● innodb_data_file_path = /data/sales:100M:autoextend:8M: max:1GB;innodb_data_file_path = /data2/sales2:100M:autoextend:8M: max:2GB

  需要我们注意的地方是,在这些示例中inndb_data_home_dir参数开始设置时要为空,因为最终数据文件位于单独的位置(/data/和/data2/)。如果我们希望所有InnoDB数据文件都位于相同的位置则可以通过使用innodb_data_home_dir来指定共同位置,然后再通过inndo_data_file_path来指定文件名就可以了。如果没有定义这些值将在datadir中创建一个sales。

  


 

  innodb_file_io_threads

  这个参数用来指定InnoDB表可用的文件I/O线程数,笔者建议在非Windows平台中我们把这个参数设置为4。

  


 

  innodb_data_home_dir

  这个参数用来指定创建InnoDB表空间的路径的公共部分。在默认情况下这是MySQL的默认数据,通常由MySQL参数datadir指定。

  


 

  innodb_flush_log_at_trx_commit

  如果将这个参数设置为1将在每次提交事务后将日志写入磁盘。为提供性能我们可以设置为0或2,但要承担在发生故障时丢失数据的风险。通常设置为0则表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次;而设置为2则表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。

  


 

  innodb_log_archive

  由于MySQL目前使用自己的日志文件恢复InnoDB表,所以这个参数我们可以把它设置为0。

  


 

  innodb_log_arch_dir

  MySQL虽然目前忽略此参数,但会在未来的版本中使用。我们应当将其设置为与innodb_log_group_home_dir相同的值。

  


 

  innodb_log_buffer_size

  这个参数用来确定些日志文件所用的内存大小,以M为单位。通常缓冲区更大能提高性能,但意外的故障将会丢失数据。所以笔者建议大家把它设置为1-8M之间。

  


 

  innodb_log_file_size

  这个参数用来确定数据日志文件的大小,以M为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间。

  


 

  innodb_log_files_in_group

  为提高性能MySQL可以以循环方式将日志文件写到多个文件。笔者在这里推荐大家把它设置为3M。

  


 

  innodb_log_group_home_dir

  这个参数用来确定日志文件组中的文件的位置,日志组中文件的个数由innodb_log_files_in_group确定,这个位置设置默认为MySQL的datadir。

  


 

  skip-innodb

  启用这个参数能防止夹杂InnoDB表驱动程序,不使用InnoDB表时笔者推荐大家进行设置。

  


 

  innodb_lock_wait_timeout

  众所周知InnoDB有其内置的死锁检测机制从而能导致未完成的事务回滚。但是如果结合InnoDB使用MyISAM的locktables语句或第三方事务引擎则InnoDB无法识别死锁。为了消除这种可能性,我们可以将innodb_lock_wait_timeout设置为一个整数值,指示MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)。

  

  


 

  以上就是利用InnoDB配置参数提高MySQL性能的方法介绍,如果大家觉得有必要的话可以记下笔记或者进行收藏!另外如果大家觉得笔者的文章中有不足的地方时笔者欢迎大家对本文章中出现的讲解提出自己的个人建议,对出现错误的地方提出批评,笔者会诚心接纳大家的建议和批评,并根据大家提出的建议和批评作出相应的修改工作。如果大家还想浏览更多相关的内容欢迎到网站的IT文库浏览文章哦!

赞(0)
踩(0)
分享到:
推荐查看
华为认证网络工程师 HCIE直播课视频教程