FROM:http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-configuration
innodb_additional_mem_pool_size InnoDB用来存储数据目录信息&其它内部数据结构的内存池的大小。
你应用程序里的表越多,你需要在这里分配越多的内存。如果InnoDB用光了这个池内的内存,InnoDB开始从操作系统分配内存,并且往MySQL错误日志写警告信息。 默认值是1MB。
innodb_autoextend_increment 当自动扩展表空间被填满之时,为扩展而增加的尺寸(MB为单位)。 默认值是8。这个选项可以在运行时作为全局系统变量而改变。
innodb_buffer_pool_awe_mem_mb 这个参数最大的可能值是64000。如果你的32位Windows操作系统使用所谓的“地址窗口扩展(AWE)”支持超过4GB内存,你可以用这个参数把InnoDB缓冲池分配进AWE物理内存。
innodb_buffer_pool_size 对innodb_buffer_pool_size参数,一个比较好的值是500MB。 InnoDB用来缓存它的数据和索引的内存缓冲区的大小。你把这个值设得越高,访问表中数据需要得磁盘I/O越少。在一个专用的数据库服务器上,你可以设置这个参数达机器物理内存大小的80%。尽管如此,还是不要把它设置得太大,因为对物理内存的竞争可能在操作系统上导致内存调度。
innodb_checksums InnoDB在所有对磁盘的页面读取上使用校验和验证以确保额外容错防止硬件损坏或数据文件。这个选项( 默认是允许的)可以用--skip-innodb-checksums来关闭。
innodb_data_file_path 到单独数据文件和它们尺寸的路径。innodb_data_home_dir连接到这里指定的每个路径,到每个数据文件的完整目录路径可被获得。
innodb_data_home_dir 默认是MySQL数据目录。你也可以指定这个值为一个空字符串,在这种情况下,你可以在innodb_data_file_path中使用绝对文件路径。
innodb_doublewrite 默认地,InnoDB存储所有数据两次,第一次存储到doublewrite缓冲,然后存储到确实的数据文件。这个选项可以被用来禁止这个功能。这个选项 默认是允许的用--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。
innodb_flush_method
这个选项只在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
警告:这个选项仅在一个紧急情况下被定义,当时你想要从损坏的数据库转储表。可能的值为从1到6。当这个选项值大于零之时,InnoDB阻止用户修改数据。
innodb_lock_wait_timeout
InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的 锁定表中自动检测事务死锁并且回滚事务。
InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒。
为在一个复制建立中最大可能的持久程度和连贯性,你应该在主服务器上的my.cnf文件里使用innodb_flush_log_at_trx_commit=1和sync-binlog=1。
innodb_locks_unsafe_for_binlog 这个选项在InnoDB搜索和索引扫描中关闭下一键锁定。这个选项的 默认值是假(false)。
正常地,InnoDB使用一个被称为next-key locking的算法。当搜索或扫描一个表索引之时,InnoDB以这样一种方式实行行级锁定,它对任何遇到的索引记录设置共享的或独占的锁定。
因此,行级锁定实际是索引记录锁定。InnoDB对索引记录设置的锁定也影响被锁定索引记录之前的“gap”。
CREATE TABLE A(A INT NOT NULL, B INT);
INSERT INTO A VALUES (1,2),(2,3),(3,2),(4,3),(5,2);
COMMIT;
如果一个连接执行一个查询:
SET AUTOCOMMIT = 0;
UPDATE A SET B = 5 WHERE B = 3;
并且其它连接跟着第一个连接执行其它查询:
SET AUTOCOMMIT = 0;
UPDATE A SET B = 4 WHERE B = 2;
接着查询2要等查询1的提交或回滚,因为查询1对行(2,3)有一个独占的锁定,并且查询2在扫描行的同时也试着对它不能锁定的同一个行(2,3)采取一个独占的锁定。这是因为当innodb_locks_unsafe_for_binlog选项被使用之时,查询2首先对一个行采取一个独占的锁定,然后确定是否这个行属于结果包,并且如果不属于,就释放不必要的锁定。
因此,查询1按如下执行:
x-lock(1,2)
unlock(1,2)
x-lock(2,3)
update(2,3) to (2,5)
x-lock(3,2)
unlock(3,2)
x-lock(4,3)
update(4,3) to (4,5)
x-lock(5,2)
unlock(5,2)
并且查询2按如下执行:
x-lock(1,2)
update(1,2) to (1,4)
x-lock(2,3) - 等待查询1提交或回滚
innodb_log_arch_dir
如果我们使用日志档案,被完整写入的日志文件所在的目录也被归档。这个参数值如果被使用了,应该被设置得与innodb_log_group_home_dir一样。尽管如此,它不是必需的。
innodb_log_archive 因为MySQL使用它自己的日志文件从备份来恢复,所以当前没有必要来归档InnoDB日志文件。这个选项的 默认值是0。
innodb_log_buffer_size
InnoDB用来往磁盘上的日志文件写操作的缓冲区的大小。明智的值是从1MB到8MB。 默认的是1MB。一个大的日志缓冲允许大型事务运行而不需要在事务提交之前往磁盘写日志。因此,如果你有大型事务,使日志缓冲区更大以节约磁盘I/O。
innodb_log_file_size
在日志组里每个日志文件的大小。在32位计算机上日志文件的合并大小必须少于4GB。 默认是5MB。明智的值从1MB到N分之一缓冲池大小,其中N是组里日志文件的数目。值越大,在缓冲池越少需要检查点刷新行为,以节约磁盘I/O。但更大的日志文件也意味这在崩溃时恢复得更慢。
innodb_log_files_in_group 在日志组里日志文件的数目。InnoDB以循环方式写进文件。默认是2(推荐)。
innodb_log_group_home_dir 到InnoDB日志文件的目录路径。它必须有和innodb_log_arch_dir一样的值。如果你不指定任何InnoDB日志参数, 默认的是在MySQL数据目录里创建两个5MB大小名为ib_logfile0和ib_logfile1的文件。
innodb_max_dirty_pages_pct 这是一个范围从0到100的整数。默认是90。InnoDB中的主线程试着从缓冲池写页面,使得脏页(没有被写的页面)的百分比不超过这个值。
如果你有SUPER权限,这个百分比可以在服务器运行时按下面来改变: SET GLOBAL innodb_max_dirty_pages_pct = value;
innodb_max_purge_lag 默认值是零,意为无延迟。这个选项可以在运行时作为全局系统变量而被改变。 控制在净化操作被滞后之时,如何延迟INSERT, UPDATE和DELETE操作。
innodb_mirrored_log_groups 我们为数据库保持的日志组内同样拷贝的数量。当前这个值应该被设为1。
innodb_open_files 选项仅与你使用多表空间时有关。它指定InnoDB一次可以保持打开的.ibd文件的最大数目。最小值是10。 默认值300。仅对InnoDB的。它们独立于那些由--open-files-limit服务器选项指定的描述符,且不影响表缓存的操作。
innodb_status_file 这个选项让InnoDB为周期的SHOW INNODB STATUS输出创建一个文件<datadir>/innodb_status.<pid>。
innodb_support_xa 当被设置为ON或者1(默认地),这个变量允许InnoDB支持在XA事务中的 双向提交。如果你对使用XA并不关心,你可以通过设置这个选项为OFF或0来禁止这个变量,以减少磁盘 刷新的次数并获得更好的InnoDB性能。
innodb_table_locks 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 InnoDB试着在InnoDB内保持操作系统线程的数量少于或等于这个参数给出的限制。如果有性能问题,并且SHOW INNODB STATUS显示许多线程在等待信号,可以让线程“thrashing” ,并且设置这个参数更小或更大。如果你的计算机有多个处理器和磁盘,你可以试着这个值更大以更好地利用计算机的资源。一个推荐的值是系统上处理器和磁盘的个数之和。值为500或比500大会禁止 调用并发检查。默认值是20,并且如果设置大于或等于20,并发检查将被禁止。
相关推荐
然而,当遇到InnoDB启动失败并导致MySQL数据库无法重启时,这通常意味着存在一些严重的问题,可能涉及到数据损坏、配置错误或者系统资源不足。以下是一些可能的解决步骤和相关知识点: 1. **检查错误日志**:在上述...
为了解决这个问题,一种有效的方法是在创建数据库时启用`innodb_file_per_table`选项。这个参数使得每个InnoDB表拥有独立的数据文件(.ibd),而不是存储在系统表空间(ibdata1)中。当数据被删除后,通过执行`...
这是一个非标准的启动选项,允许MySQL跳过部分或全部的恢复步骤,从而有可能让数据库服务启动。该参数可以设置为1到6,数值越大,强制恢复的程度越高: 1. SRV_FORCE_IGNORE_CORRUPT:忽略检测到的损坏页面,继续...
InnoDB有多个可调整的启动选项和系统变量,例如`innodb_additional_mem_pool_size`用于设置数据字典和其他内部数据结构的内存大小,`innodb_autoextend_increment`定义自动增长的共享表空间扩展大小,`innodb_...
出现如下语句:The ‘InnoDB’ feature is disabled; you need MySQL built with ‘InnoDB’ to have it working;... 您可能感兴趣的文章:mysql服务无法启动报错误1067解决方法(mysql启动错误1067 )mysql启动的erro
- 运行命令如`mysqlinstanceconfig --configure innodb --datadir="D:\MySQL\data" --basedir="D:\MySQL\bin" --service-name=MySQL80`(根据实际情况调整路径)。 - 重新配置后,重启服务检查是否解决了问题。 4...
这是MySQL服务器的主要配置文件,它包含了启动时需遵循的各种参数和选项。通常,`my.cnf`位于系统的`/etc/mysql/`目录下(在Linux系统中),或者在Windows系统的`C:\ProgramData\MySQL\MySQL Server X.Y\my.ini`路径...
实际上,虽然MySQL官方并未提供修改InnoDB数据页大小的直接选项,但是有经验的DBA可以通过修改源代码来实现这一目标。这个过程涉及到对MySQL源代码的深入理解和编译,因此需要谨慎操作。以下是修改InnoDB数据页大小...
当InnoDB启动的时候,它会先去检查data file和transaction log,并且会做二步操作: xtraBackup在备份的时候, 一页一页地复制innodb的数据,而且不锁定表,与此同时,XtraBackup还有另外一个线程监视着...
03.MySQL高级启动及登录MySQL.avi 04.MySQL高级索引概述.avi 05.MySQL高级索引优势和劣势.avi 06.MySQL高级索引数据结构.avi 07.MySQL高级索引数据结构BTREE.avi 08.MySQL高级索引数据结构B+TREE.avi 09.MySQL高级...
InnoDB热备份工具(简称ibbackup)是一款能够实现在MySQL运行期间对InnoDB数据库进行无锁备份的强大工具,它不会干扰到正常的数据库处理流程。通过ibbackup,用户可以获取到一个一致性较高的数据库副本,就如同在...
6. **设置权限和启动服务**:设置MySQL的启动脚本和权限,然后启动MySQL服务。 在实际应用中,开发者和DBA需要根据具体业务需求和环境调整MySQL的配置,以实现最佳性能和稳定性。同时,定期更新和维护MySQL服务器,...
- 删除因InnoDB启动而创建的文件,如`ibdata1`和`ib_logfile*`。但请注意,这可能会导致已有的InnoDB表数据丢失,除非你已经将数据迁移至其他存储引擎或备份。 4. **重启MySQL服务**: 修改配置后,重启MySQL服务...
### MySQL服务无法启动(1067)问题解决 #### 背景介绍 在使用MySQL数据库的过程中,可能会遇到MySQL服务无法启动的情况,并且错误提示为“1067”。这种情况通常发生在Windows操作系统上,当MySQL服务试图启动时,会...
默认情况下使用的是`latin1_general_ci`,此值同样可以在启动MySQL服务时通过`--collation_server`选项指定。 3. **`-DWITH_EXTRA_CHARSETS`**: 设置额外的字符集选项。 ``` -DWITH_EXTRA_CHARSETS=all ``` 可...
2. **MySQL的启动选项和系统变量** MySQL服务器在启动时可以接受各种选项来配置其行为,例如设置端口号、数据目录等。系统变量允许动态调整服务器的运行参数,这些变量可以全局设置,也可以针对每个会话进行更改,...
MySQL数据库的管理和维护中,了解启动、关闭及恢复参数至关重要,特别是针对InnoDB存储引擎的配置。InnoDB作为MySQL中最常用的存储引擎,它的稳定性和性能直接影响到数据库的正常运行。本篇文章将深入探讨如何取消`...