skip-innodb
# 如果你的 MySQL 服务包含 InnoDB 支持但是并不打算使用的话, 使用此选项会节省内存以及磁盘空间, 并且加速某些部分
innodb_file_per_table = 1
# InnoDB 为独立表空间模式,每个数据库的每个表都会生成一个数据空间
# 独立表空间优点:
# 1.每个表都有自已独立的表空间。
# 2.每个表的数据和索引都会存在自已的表空间中。
# 3.可以实现单表在不同的数据库中移动。
# 4.空间可以回收(除 drop table 操作处,表空不能自已回收)
# 缺点:
# 1. 单表增加过大,如超过 100G
# 结论:
# 共享表空间在 Insert 操作上少有优势。其它都没独立表空间表现好。当启用独立表空间时,请合理调整:innodb_open_files
innodb_status_file = 1
# 启用 InnoDB 的 status file,便于管理员查看以及监控等
innodb_open_files = 2048
# 限制 Innodb 能打开的表的数据,如果库里的表特别多的情况,请增加这个。这个值默认是 300
innodb_additional_mem_pool_size = 100M
# 设置 InnoDB 存储引擎用来存放数据字典信息以及一些内部数据结构的内存空间大小,所以当我们一个 MySQL Instance 中的数据库对象非常多的时候,是需要适当调整该参数的大小以确保所有数据都能存放在内存中提高访问效率的。
innodb_buffer_pool_size = 2G
# 包括数据页、索引页、插入缓存、锁信息、自适应哈希所以、数据字典信息. InnoDB 使用一个缓冲池来保存索引和原始数据, 不像 MyISAM. 这里你设置越大, 你在存取表里面数据时所需要的磁盘 I/O 越少. 在一个独立使用的数据库服务器上, 你可以设置这个变量到服务器物理内存大小的 80%, 不要设置过大, 否则, 由于物理内存的竞争可能导致操作系统的换页颠簸. 注意在 32 位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制, 所以不要设置的太高.
innodb_write_io_threads = 4
innodb_read_io_threads = 4
# innodb 使用后台线程处理数据页上的读写 I/O(输入输出)请求, 根据你的 CPU 核数来更改, 默认是 4
# 注: 这两个参数不支持动态改变, 需要把该参数加入到 my.cnf 里,修改完后重启 MySQL 服务, 允许值的范围从 1-64
innodb_data_home_dir = /usr/local/mysql/var/
# 设置此选项如果你希望 InnoDB 表空间文件被保存在其他分区. 默认保存在 MySQL 的 datadir 中.
innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend
#InnoDB 将数据保存在一个或者多个数据文件中成为表空间. 如果你只有单个逻辑驱动保存你的数据, 一个单个的自增文件就足够好了. 其他情况下. 每个设备一个文件一般都是个好的选择. 你也可以配置 InnoDB 来使用裸盘分区 - 请参考手册来获取更多相关内容
innodb_file_io_threads = 4
# 用来同步 IO 操作的 IO 线程的数量. 此值在 Unix 下被硬编码为 4, 但是在 Windows 磁盘 I/O 可能在一个大数值下表现的更好.
innodb_thread_concurrency = 16
# 在 InnoDb 核心内的允许线程数量, InnoDB 试着在 InnoDB 内保持操作系统线程的数量少于或等于这个参数给出的限制, 最优值依赖于应用程序, 硬件以及操作系统的调度方式. 过高的值可能导致线程的互斥颠簸. 默认设置为 0, 表示不限制并发数,这里推荐设置为 0,更好去发挥 CPU 多核处理能力,提高并发量
innodb_flush_log_at_trx_commit = 1
# 如果设置为 1 ,InnoDB 会在每次提交后刷新 (fsync) 事务日志到磁盘上, 这提供了完整的 ACID 行为. 如果你愿意对事务安全折衷, 并且你正在运行一个小的食物, 你可以设置此值到 0 或者 2 来减少由事务日志引起的磁盘 I/O
# 0 代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘.
# 2 代表日志写入日志文件在每次提交后, 但是日志文件只有大约每秒才会刷新到磁盘上.
innodb_log_buffer_size = 8M
# 用来缓冲日志数据的缓冲区的大小. 当此值快满时, InnoDB 将必须刷新数据到磁盘上. 由于基本上每秒都会刷新一次, 所以没有必要将此值设置的太大(甚至对于长事务而言)
innodb_log_file_size = 500M
# 事物日志大小. 在日志组中每个日志文件的大小,你应该设置日志文件总合大小到你缓冲池大小的 5%~100%,来避免在日志文件覆写上不必要的缓冲池刷新行为. 不论如何, 请注意一个大的日志文件大小会增加恢复进程所需要的时间.
innodb_log_files_in_group = 2
# 在日志组中的文件总数. 通常来说 2~3 是比较好的.
innodb_log_group_home_dir = /usr/local/mysql/var/
# InnoDB 的日志文件所在位置. 默认是 MySQL 的 datadir. 你可以将其指定到一个独立的硬盘上或者一个 RAID1 卷上来提高其性能 innodb_max_dirty_pages_pct = 90 #innodb 主线程刷新缓存池中的数据,使脏数据比例小于 90%, 这是一个软限制, 不被保证绝对执行.
innodb_lock_wait_timeout = 50
#InnoDB 事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB 在它自己的 锁定表中自动检测事务死锁并且回滚事务。 InnoDB 用 LOCK TABLES 语句注意到锁定设置。默认值是 50 秒
innodb_flush_method = O_DSYNC
# InnoDB 用来刷新日志的方法. 表空间总是使用双重写入刷新方法. 默认值是 “fdatasync”, 另一个是 “O_DSYNC”.
innodb_force_recovery=1
# 如果你发现 InnoDB 表空间损坏, 设置此值为一个非零值可能帮助你导出你的表. 从 1 开始并且增加此值知道你能够成功的导出表.
innodb_fast_shutdown
# 加速 InnoDB 的关闭. 这会阻止 InnoDB 在关闭时做全清除以及插入缓冲合并. 这可能极大增加关机时间, 但是取而代之的是 InnoDB 可能在下次启动时做这些操作.