# 如果你的 MySQL 服务包含 InnoDB 支持但是并不打算使用的话, # 使用此选项会节省内存以及磁盘空间,并且加速某些部分 #skip-innodb
# 附加的内存池被 InnoDB 用来保存 metadata 信息(5.6中不再推荐使用) # 如果 InnoDB 为此目的需要更多的内存,它会开始从 OS 这里申请内存. # 由于这个操作在大多数现代操作系统上已经足够快, 你一般不需要修改此值. # SHOW INNODB STATUS 命令会显示当先使用的数量. #****(此属性对当前环境无效)**** #innodb_additional_mem_pool_size = 64M
# InnoDB使用一个缓冲池来保存索引和原始数据, 不像 MyISAM. # 这里你设置越大,这能保证你在大多数的读取操作时使用的是内存而不是硬盘,在存取表里面数据时所需要的磁盘 I/O 越少. # 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80% # 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸. # 注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制, # 所以不要设置的太高. innodb_buffer_pool_size = 6G
# InnoDB 将数据保存在一个或者多个数据文件中成为表空间. # 如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了. # 其他情况下.每个设备一个文件一般都是个好的选择. # 你也可以配置 InnoDB 来使用裸盘分区 – 请参考手册来获取更多相关内容 innodb_data_file_path = ibdata1:10M:autoextend
# 设置此选项如果你希望InnoDB表空间文件被保存在其他分区. # 默认保存在MySQL的datadir中. #innodb_data_home_dir =
# 用来同步IO操作的IO线程的数量. # 此值在Unix下被硬编码为8,但是在Windows磁盘I/O可能在一个大数值下表现的更好. #innodb_file_io_threads = 8
# 如果你发现 InnoDB 表空间损坏, 设置此值为一个非零值可能帮助你导出你的表. # 从1开始并且增加此值知道你能够成功的导出表. #innodb_force_recovery=1
# 在 InnoDb 核心内的允许线程数量. # 最优值依赖于应用程序,硬件以及操作系统的调度方式. # 过高的值可能导致线程的互斥颠簸. innodb_thread_concurrency = 16
# 如果设置为1 ,InnoDB 会在每次提交后刷新(fsync)事务日志到磁盘上, # 这提供了完整的 ACID 行为. # 如果你愿意对事务安全折衷, 并且你正在运行一个小的事物, 你可以设置此值到0或者2来减少由事务日志引起的磁盘I/O # 0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘. # 2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上. innodb_flush_log_at_trx_commit = 2
#(说明:如果是游戏服务器,建议此值设置为2;如果是对数据安全要求极高的应用,建议设置为1; #设置为0性能最高,但如果发生故障,数据可能会有丢失的危险! #默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。 #特别是使用电池供电缓存(Battery backed up cache)时。 #设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。 #日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。 #设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统挂了时才可能丢数据。)
# 加速 InnoDB 的关闭. 这会阻止 InnoDB 在关闭时做全清除以及插入缓冲合并. # 这可能极大增加关机时间, 但是取而代之的是 InnoDB 可能在下次启动时做这些操作. #innodb_fast_shutdown
# 用来缓冲日志数据的缓冲区的大小. # 当此值快满时, InnoDB 将必须刷新数据到磁盘上. # 由于基本上每秒都会刷新一次,所以没有必要将此值设置的太大(甚至对于长事务而言) innodb_log_buffer_size = 16M
# 在日志组中每个日志文件的大小. # 你应该设置日志文件总合大小到你缓冲池大小的25%~100% # 来避免在日志文件覆写上不必要的缓冲池刷新行为. # 不论如何, 请注意一个大的日志文件大小会增加恢复进程所需要的时间. innodb_log_file_size = 512M
# 在日志组中的文件总数. # 通常来说2~3是比较好的. innodb_log_files_in_group = 3
# InnoDB 的日志文件所在位置. 默认是 MySQL 的 datadir. # 你可以将其指定到一个独立的硬盘上或者一个RAID1卷上来提高其性能 #innodb_log_group_home_dir
# 在 InnoDB 缓冲池中最大允许的脏页面的比例. # 如果达到限额, InnoDB 会开始刷新他们防止他们妨碍到干净数据页面. # 这是一个软限制,不被保证绝对执行. innodb_max_dirty_pages_pct = 90
# InnoDB 用来刷新日志的方法. # 表空间总是使用双重写入刷新方法 # 默认值是 “fdatasync”, 另一个是 “O_DSYNC”. # 一般来说,如果你有硬件 RAID 控制器,并且其独立缓存采用 write-back 机制,并有着电池断电保护,那么应该设置配置为 O_DIRECT # 否则,大多数情况下应将其设为 fdatasync #innodb_flush_method=fdatasync
# 在被回滚前,一个 InnoDB 的事务应该等待一个锁被批准多久. # InnoDB 在其拥有的锁表中自动检测事务死锁并且回滚事务. # 如果你使用 LOCK TABLES 指令, 或者在同样事务中使用除了 InnoDB 以外的其他事务安全的存储引擎 # 那么一个死锁可能发生而 InnoDB 无法注意到. # 这种情况下这个 timeout 值对于解决这种问题就非常有帮助. innodb_lock_wait_timeout = 120
# 这项设置告知InnoDB是否需要将所有表的数据和索引存放在共享表空间里(innodb_file_per_table = OFF) 或者为每张表的数据单独放在一个.ibd文件(innodb_file_per_table = ON) # 每张表一个文件允许你在drop、truncate或者rebuild表时回收磁盘空间 # 这对于一些高级特性也是有必要的,比如数据压缩,但是它不会带来任何性能收益 innodb_file_per_table = on
|