InnoDB 存储引擎 ·遵循 ACID,支持 commit,rollback 和故障恢复,是事务安全的 ·行级锁定,Oracle-style 读一致性改善了多用户并发操作性能 ·支持 FOREIGN KEY 参照完整性 ·轻松地与其他存储引擎表组合,例如与 MEMORY 表的 JOIN InnoDB 在内存中维持着自己的缓冲区,用来缓存数据和索引。InnoDB 的数据和索引存放在表空间中,表空间可以是共享的,也可以是独享的。 独享表空间 开启独享表空间模式之后 InnoDB 以 table_name.idb 命名在数据库目录之中保存新创建的表,数据和索引都保存在.idb 文件,.frm 仍然会创建用来保存元数据。 即使使用独享表空间,共享表空间也会存在,因为需要它存放一些 undo 信息和其他元数据信息。因此不能像 MyISAM 表文件那样在数据库目录间随便移动.idb 文件,因为共享表空间里会保存数据库名,数据库间的移动应使用RENAME TABLE语句:RENAME TABLE db1.tbl_name TO db2.tbl_name; .idb 文件的恢复方法: 1、 ALTER TABLE tbl_name DISCARD TABLESPACE; 丢弃现有表空间文件 2、 复制备份的.idb 文件至正确的目录 3、 ALTER TABLE tbl_name IMPORT TABLESPACE; 使用新的 idb 文件 InnoDB 启动选项和系统变量 Variables Description innodb 控制 InnoDB 的加载。OFF,ON,FORCE innodb_additional_mem_pool_size InnoDB 用于保存数据字典信息和其他内部数据结构的内存区大小,默认 8M。超出时,使用操作系统内存并向 error log 写错误信息 innodb_autoextend_increment 自动增长的共享表空间写满时的增长大小 innodb_autoinc_lock_mode auto_increment 自动增长值的锁定模式 innodb_buffer_pool_size InnoDB 缓存数据和索引的缓冲区大小。默认是 128M,数据库专用服务器可以将其设置为物理内存的 80% innodb_change_buffering 开启修改缓存的类型 inserts, deletes, purges, changes, all, none innodb_checksums 开启校验和 innodb_commit_concurrency 同时刻可以进行提交操作的线程数。值为 0 允许任意多事务同时提交 innodb_concurrency_tickets 线程通过innodb_thread_concurrency 并发线程数验证后,可以得到一个innodb_concurrency_tickets 数量的访问次数,在该次数范围内不需要再进行并发线程数验证。 innodb_data_file_path 指定数据文件,格式为 file_name:file_size[:autoextend[:max:max_...