InnoDB引擎参数解析


name is dynamic Since description
innodb_adaptive_hash_index NO 5.0.52 是否激活自适应哈希索引,默认激活(ON)
innodb_additional_mem_pool_size NO InnoDB用来存储数据目录信息&其它内部数据结构的内存池的大小。你应用程序里的表越多,你需要在这里分配越多的内存。如果InnoDB用光了这个池内的内存,InnoDB开始从操作系统分配内存,并且往MySQL错误日志写警告信息。默认值是1048576(1M)
innodb_autoextend_increment Yes 自扩展的共享表空间已满时,所扩展的空间大小。默认8,取值范围(1-1000),单位MB
innodb_buffer_pool_awe_men_mb NO 缓冲池大小(MB)
innodb_buffer_pool_size NO InnoDB用来缓存它的数据和索引的内存缓冲区的大小。你把这个值设得越高,访问表中数据需要得磁盘I/O越少。在一个专用的数据库服务器上,你可以设置这个参数达机器物理内存大小的80%。尽管如此,还是不要把它设置得太大,因为对物理内存的竞争可能在操作系统上导致内存调度。
innodb_checksums NO 5.0.3 InnoDB在所有对磁盘的页面读取上使用校验和验证以确保额外容错防止硬件损坏或数据文件。尽管如此,在一些少见的情况下(比如运行标准检查之时)这个额外的安全特征是不必要的。在这些情况下,这个选项(默认是允许的)可以用–skip-innodb-checksums来关闭。
innodb_commit_concurrency Yes 5.0.12 能同时提交事务的线程数量,默认值为0(不限制)。取值范围(0-1000)
innodb_concurrency_tickets Yes 5.0.3 能够进入InnoDB的并发线程的数量由innodb_thread_concurrency变量决定。当一个线程被放置队列中并试图进入InnoDB时,如果线程的并发数量已达限制值,该线程将被赋予free tickets(innodb_concurrency_tickets),然后该线程可自由进入或离开InnoDB知道线程消耗完tickets。然后又重新放置入队列
innodb_data_file_path NO 单独数据文件的路径及大小信息(如:ibdata1:10MB:autoextend)
innodb_data_home_dir NO 目录路径对所有InnoDB数据文件的共同部分。如果你不设置这个值,默认是MySQL数据目录。
innodb_doublewrite NO 默认地,InnoDB存储所有数据两次,第一次存储到doublewrite缓冲,然后存储到确实的数据文件。这个选项可以被用来禁止这个功能。类似于innodb_checksums,这个选项默认是允许的;因为标准检查或在对顶级性能的需要超过对数据完整性或可能故障的关注之时,这个选项用–skip-innodb-doublewrite来关闭。
innodb_fast_shutdown Yes 如果你把这个参数设置为0,InnoDB在关闭之前做一个完全净化和一个插入缓冲合并。这些操作要花几分钟时间,设置在极端情况下要几个小时。如果你设置这个参数为1,InnoDB在关闭之时跳过这些操作。默认值为1。如果你设置这个值为2 (在Netware无此值), InnoDB将刷新它的日志然后冷关机,仿佛MySQL崩溃一样。已提交的事务不会被丢失,但在下一次启动之时会做一个崩溃恢复。
innodb_file_io_threads NO InnoDB中文件I/O线程的数量。正常地,这个参数是用默认的,默认值是4,但是大数值对Windows磁盘I/O有益。在Unix上,增加这个数没有效果,InnoDB总是使用默认值。
innodb_file_per_table NO 这个选项致使InnoDB用自己的.ibd文件为存储数据和索引创建每一个新表,而不是在共享表空间中创建。默认(OFF)
innodb_flush_log_at_trx_commit Yes 当innodb_flush_log_at_trx_commit被 设置为0,日志缓冲每秒一次地被写到日志文件,并且对日志文件做到磁盘操作的刷新,但是在一个事务提交不做任何操作。当这个值为1(默认值)之时,在每个事务提交时,日志缓冲被写到日志文件,对日志文件做到磁盘操作的刷新。当设置为2之时,在每个提交,日志缓冲被写到文件,但不对日志文件做到磁盘操作的刷新。(默认值1是兼容ACID所需要的,你可以设置其他值以获取更佳性能,但是在崩溃发生时,你将失去至少一秒的有价值的事务)
innodb_flush_method NO 这个选项只在Unix系统上有效。如果这个选项被设置为fdatasync (默认值),InnoDB使用fsync()来刷新数据和日志文件。如果被设置为O_DSYNC,InnoDB使用O_SYNC来打开并刷新日志文件,但使用fsync()来刷新数据文件。如果O_DIRECT被指定了(在一些GNU/Linux版本商可用),InnoDB使用O_DIRECT来打开数据文件,并使用fsync()来刷新数据和日志文件。注意,InnoDB使用fsync()来替代fdatasync(),并且它默认不使用O_DSYNC,因为这个值在许多Unix变种上已经发生问题。
innodb_force_recovery NO 这个选项仅在一个紧急情况下被定义,当时你想要从损坏的数据库转储表。可能的值为从1到6。
innodb_lock_wait_timeout NO 事务等待行锁的秒数,当超过时,事务将放弃(默认50秒)。如果一个事务试图访问另一个InnoDB事务已经锁定的行,如果超过该时间,将发出以下错误:ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction.该情况下,事务不会被执行,也不会被回滚而是尝试这重新执行事务
innodb_locks_unsafe_for_binlog NO 这个选项在InnoDB搜索和索引扫描中关闭下一键锁定。这个选项的默认值是假(false)。
innodb_log_arch_dir NO 5.1移除该设置
innodb_log_archive NO 这个值当前被设为0。因为MySQL使用它自己的日志文件从备份来恢复,所以当前没有必要来归档InnoDB日志文件。这个选项的默认值是0。
innodb_log_buffer_size NO InnoDB用来往磁盘上的日志文件写操作的缓冲区的大小。明智的值是从1MB到8MB。默认的是1MB。一个大的日志缓冲允许大型事务运行而不需要在事务提交之前往磁盘写日志。因此,如果你有大型事务,使日志缓冲区更大以节约磁盘I/O。
innodb_log_files_in_group NO 在日志组里日志文件的数目。InnoDB以循环方式写进文件。默认是2(推荐)。
innodb_log_file_size NO 在日志组里每个日志文件的大小。在32位计算机上日志文件的合并大小必须少于4GB。默认是5MB。明智的值从1MB到N分之一缓冲池大小,其中N是组里日志文件的数目。值越大,在缓冲池越少需要检查点刷新行为,以节约磁盘I/O。但更大的日志文件也意味这在崩溃时恢复得更慢。
innodb_log_group_home_dir NO 到InnoDB日志文件的目录路径。它必须有和innodb_log_arch_dir一样的值。如果你不指定任何InnoDB日志参数,默认的是在MySQL数据目录里创建两个5MB大小名为ib_logfile0和ib_logfile1的文件。
innodb_max_dirty_pages_pct Yes 这是一个范围从0到100的整数。默认是90。InnoDB中的主线程试着从缓冲池写页面,使得脏页(没有被写的页面)的百分比不超过这个值。如果你有SUPER权限,这个百分比可以在服务器运行时按下面来改变:
innodb_max_purge_lag Yes 这个选项控制在净化操作被滞后之时,如何延迟INSERT,UPDATE和DELETE操作。
innodb_mirrored_log_groups NO 为数据库保持的日志组内同样拷贝的数量。当前这个值应该被设为1。
innodb_open_files NO 在InnoDB中,这个选项仅与你使用多表空间时有关。它指定InnoDB一次可以保持打开的.ibd文件的最大数目。最小值是10。默认值300。对.ibd文件的文件描述符是仅对InnoDB的。它们独立于那些由–open-files-limit服务器选项指定的描述符,且不影响表缓存的操作。
innodb_rollback_on_timeout NO 5.0.32 指定事务超时回滚的时间长度
innodb_support_xa Yes 5.0.3 当被设置为ON或者1(默认地),这个变量允许InnoDB支持在XA事务中的双向提交。允许innodb_support_xa导致一个额外的对事务准备的磁盘刷新。如果你对使用XA并不关心,你可以通过设置这个选项为OFF或0来禁止这个变量,以减少磁盘刷新的次数并获得更好的InnoDB性能。
innodb_sync_spin_loops Yes 5.0.3 一个线程在被挂起前,等待InnoDB互斥锁释放的时间值
innodb_table_locks Yes InnoDB重视LOCK TABLES,直到所有其它线程已经释放他们所有对表的锁定,MySQL才从LOCK TABLE .. WRITE返回。默认值是1,这意为LOCK TABLES让InnoDB内部锁定一个表。在使用AUTOCOMMIT=1的应用里,InnoDB的内部表锁定会导致死锁。你可以在my.cnf文件(Windows上是my.ini文件)里设置innodb_table_locks=0 来消除这个问题。
innodb_thread_concurrency Yes InnoDB试着在InnoDB内保持操作系统线程的数量少于或等于这个参数给出的限制。如果有性能问题,并且SHOW INNODB STATUS显示许多线程在等待信号,可以让线程“thrashing” ,并且设置这个参数更小或更大。如果你的计算机有多个处理器和磁盘,你可以试着这个值更大以更好地利用计算机的资源。
innodb_thread_sleep_delay Yes 在InnoDB线程加入InnoDB队列前所允许的最长休眠时间,单位为微妙,默认值为10000.如果设置为0,将禁用休眠�

如果是Dynamic变量,则可在使用环境中通过sql命令  set var_name = value;来改变该变量的值,该改变仅对当前线程有效。

如果是非Dynmanic变量,则可在MySQL启动时进行设置,可通过修改配置文件(my.conf in linux,my.ini in windows),也可以通过增加启动项参数,如windows下的 >mysqld.exe  –innodb-buffer-pool-size=10000(mysqld.exe –innodb_buffer_pool_size=10000等效前者,推荐使用前者),linux下的 >/usr/sbin/mysqld –innodb-buffer-pool-size=10000。


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注