这一篇博客还不能超过8万字符,因此只能接着上一篇再写一篇了。
InnoDB启动选项
这一节叙述InnoDB相关的服务器选项,全部这些选项能够以--opt_name=value的形式在命令行或在选项文件里被指定。
· innodb_additional_mem_pool_size
InnoDB用来存储数据目录信息&其它内部数据结构的内存池的大小。你应用程序里的表越多,你须要在这里分配越多的内存。若是InnoDB用光了这个池内的内存,InnoDB开始从操做系统分配内存,而且往MySQL错误日志写警告信息。默认值是1MB。
· innodb_autoextend_increment
当自动扩展表空间被填满之时,为扩展而增长的尺寸(MB为单位)。默认值是8。这个选项能够在运行时做为全局系统变量而改变。
· innodb_buffer_pool_awe_mem_mb
若是缓冲池被放在32位Windows的AWE内存里,这个参数就是缓冲池的大小(MB为单位)。(仅在32位Windows上相关)若是你的32位Windows操做系统使用所谓的“地址窗口扩展(AWE)”支持超过4GB内存,你能够用这个参数把InnoDB缓冲池分配进AWE物理内存。这个参数最大的可能值是64000。若是这个参数被指定了,innodb_buffer_pool_size是在32位地址空间的mysqld内的窗口,InnoDB把那个AWE内存映射上去。对innodb_buffer_pool_size参数,一个比较好的值是500MB。
· innodb_buffer_pool_size
InnoDB用来缓存它的数据和索引的内存缓冲区的大小。你把这个值设得越高,访问表中数据须要得磁盘I/O越少。在一个专用的数据库服务器上,你能够设置这个参数达机器物理内存大小的80%。尽管如此,仍是不要把它设置得太大,由于对物理内存的竞争可能在操做系统上致使内存调度。
· innodb_checksums
InnoDB在全部对磁盘的页面读取上使用校验和验证以确保额外容错防止硬件损坏或数据文件。尽管如此,在一些少见的状况下(好比运行标准检查之时)这个额外的安全特征是没必要要的。在这些状况下,这个选项(默认是容许的)能够用--skip-innodb-checksums来关闭。
· innodb_data_file_path
到单独数据文件和它们尺寸的路径。经过把innodb_data_home_dir链接到这里指定的每一个路径,到每一个数据文件的完整目录路径可被得到。文件大小经过给尺寸值尾加M或G以MB或者GB(1024MB)为单位被指定。文件尺寸的和至少是10MB。在一些操做系统上,文件必须小于2GB。若是你没有指定innodb_data_file_path,开始的默认行为是建立一个单独的大小10MB名为ibdata1的自扩展数据文件。在那些支持大文件的操做系统上,你能够设置文件大小超过4GB。
· innodb_data_home_dir
目录路径对全部InnoDB数据文件的共同部分。若是你不设置这个值,默认是MySQL数据目录。你也能够指定这个值为一个空字符串,在这种状况下,你能够在innodb_data_file_path中使用绝对文件路径。
· innodb_doublewrite
默认地,InnoDB存储全部数据两次,第一次存储到doublewrite缓冲,而后存储到确实的数据文件。这个选项能够被用来禁止这个功能。相似于innodb_checksums,这个选项默认是容许的;由于标准检查或在对顶级性能的须要超过对数据完整性或可能故障的关注之时,这个选项用--skip-innodb-doublewrite来关闭。
· innodb_fast_shutdown
若是你把这个参数设置为0,InnoDB在关闭以前作一个彻底净化和一个插入缓冲合并。这些操做要花几分钟时间,设置在极端状况下要几个小时。若是你设置这个参数为1,InnoDB在关闭之时跳过这些操做。默认值为1。若是你设置这个值为2 (在Netware无此值), InnoDB将刷新它的日志而后冷关机,仿佛MySQL崩溃同样。已提交的事务不会被丢失,但在下一次启动之时会作一个崩溃恢复。
· innodb_file_io_threads
InnoDB中文件I/O线程的数量。正常地,这个参数是用默认的,默认值是4,可是大数值对Windows磁盘I/O有益。在Unix上,增长这个数没有效果,InnoDB老是使用默认值。
· innodb_file_per_table
这个选项导致InnoDB用本身的.ibd文件为存储数据和索引建立每个新表,而不是在共享表空间中建立。
· innodb_flush_log_at_trx_commit
当innodb_flush_log_at_trx_commit被 设置为0,日志缓冲每秒一次地被写到日志文件,而且对日志文件作到磁盘操做的刷新,可是在一个事务提交不作任何操做。当这个值为1(默认值)之时,在每一个事务提交时,日志缓冲被写到日志文件,对日志文件作到磁盘操做的刷新。当设置为2之时,在每一个提交,日志缓冲被写到文件,但不对日志文件作到磁盘操做的刷新。尽管如此,在对日志文件的刷新在值为2的状况也每秒发生一次。咱们必须注意到,由于进程安排问题,每秒一次的刷新不是100%保证每秒都发生。你能够经过设置这个值不为1来得到较好的性能,但随之你会在一次崩溃中损失二分之一价值的事务。若是你设置这个值为0,那么任何mysqld进程的崩溃会删除崩溃前最后一秒的事务,若是你设置这个值为2,那么只有操做系统崩溃或掉电才会删除最后一秒的事务。尽管如此,InnoDB的崩溃恢复不受影响,并且由于这样崩溃恢复开始做用而不考虑这个值。注意,许多操做系统和一些磁盘硬件会欺骗刷新到磁盘操做。尽管刷新没有进行,你能够告诉mysqld刷新已经进行。即便设置这个值为1,事务的持久程度不被保证,且在最坏状况下掉电甚至会破坏InnoDB数据库。在SCSI磁盘控制器中,或在磁盘自身中,使用有后备电池的磁盘缓存会加速文件刷新而且使得操做更安全。你也能够试着使用Unix命令hdparm来在硬件缓存中禁止磁盘写缓存,或使用其它一些对硬件提供商专用的命令。这个选项的默认值是1。