能够改善mysql性能的InnoDB配置参数

MySQL与MSSQL 有一个区别在于MySQL建表的时候须要选择存储引擎,经常使用的存储引擎有MyISAM和InnoDB数据库

而因为InnoDB是一个健壮的事务型存储引擎,已经有10多年的历史,一些重量级的互联网公司(Yahoo,Google Netease ,Taobao)也常用 

个人平常工做也常常接触InnoDB,如今就InnoDB一部分能够改善性能的参数列举 
1. innodb_additional_mem_pool_size 
除了缓存表数据和索引外,能够为操做所需的其余内部项分配缓存来提高InnoDB的性能。这些内存就能够经过此参数来分配。推荐此参数至少设置为2MB,实际上,是须要根据项目的InnoDB表的数目相应地增长 
2.innodb_data_pool_size 
此参数相似于MySQL的key_buffer参数,但特定用于InnoDB表.这个参数肯定了要预留多少内存来缓存表数据和索引。与key_buffer同样,更高的设置会提高性能,能够是服务器的内存70-80% 
3.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。 
4 innodb_data_home_dir 
此参数指定建立InnoDB表空间的路径的公共部分,默认状况下,这是MySQL的默认数据,由MySQL参数datadir指定 
5. innodb_file_io_threads 
此参数指定InnoDB表可用的文件I/O线程数,MySQL开发人员建议在非Windows平台中这个参数设置为4 
6. innodb_flush_log_at_trx_commit 
若是将此参数设置为1,将在每次提交事务后将日志写入磁盘。为提供性能,能够设置为0或2,但要承担在发生故障时丢失数据的风险。设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。 
7.innodb_log_archive 
由于MySQL目前使用本身的日志文件恢复InnoDB表,此参数可设置为0 
8.innodb_log_arch_dir 
MySQL目前忽略此参数,但会在将来的版本中使用。目前,应当将其设置为与innodb_log_group_home_dir相同的值 
9.innodb_log_buffer_size 
此参数肯定些日志文件所用的内存大小,以M为单位。缓冲区更大能提升性能,但意外的故障将会丢失数据.MySQL开发人员建议设置为1-8M之间 
10. innodb_log_file_size 
此参数肯定数据日志文件的大小,以M为单位,更大的设置能够提升性能,但也会增长恢复故障数据库所需的时间 
11.innodb_log_files_in_group 
为提升性能,MySQL能够以循环方式将日志文件写到多个文件。推荐设置为3M 
12. innodb_log_group_home_dir 
此参数肯定日志文件组中的文件的位置,日志组中文件的个数由innodb_log_files_in_group肯定,此位置设置默认为MySQL的datadir 
13.innodb_lock_wait_timeout 
InnoDB 有其内置的死锁检测机制,能致使未完成的事务回滚。可是,若是结合InnoDB使用MyISAM的lock tables 语句或第三方事务引擎,则InnoDB没法识别死锁。为消除这种可能性,能够将innodb_lock_wait_timeout设置为一个整数值,指示 MySQL在容许其余事务修改那些最终受事务回滚的数据以前要等待多长时间(秒数) 
14.skip-innodb 
启用此参数能防止夹杂InnoDB表驱动程序,不使用InnoDB表时推荐此设置缓存

相关文章
相关标签/搜索