Server 层参数 | ||
Table cache | #对table cache进行划分,减少table cache的锁竞争 | |
Meta data lock | # 对server层的metalock hash进行划分 #metadata lock cache的大小,这是总的大小,可以适当调大来提升并发度 | |
Slow_log | #当打开 时,该变量用于限制每分钟写入slow log的日志条数 | |
控制项 | #用于控制在创建临时表时使用的存储引擎,默认为innodb disconnect_on_expired_password #用于控制客户端如何处理失效的密码,默认打开 #影响timestamp类型column的行为,具体见文档中的参数说明 #存储host名字与iP的cache size #使用,分割,用于控制是否忽略DATA目录下的db目录 | |
Server id | #由系统自动生成的id,记录在data_dir/auto.cnf文件中,最好不要去尝试修改它 | |
优化器 | #用于控制优化器的行为,5.5也有该参数,但5.6能够控制更多的优化器行为,具体见 #用于优化in(),以确认是否直接使用索引统计,在where条件中列的等值条件个数小于这个值时,使用index dive来估算行数,否则使用index statistics来估算;设置为0则禁用index statistics, index dive更准确但效率低,具体说明见 | |
Optimizer trace |
| |
performance schema | 大量用于控制PS表大小的参数,以Performance_schema_作为前缀,不一一列出 | |
Replication/gtid |
| |
Replication/crash safe | #是以文件(FILE) 还是表(table)的方式记录relaylog坐标信息 #是以文件(FILE) 还是表(table)的方式记录binlog信息 #在读取binlog时(例如show binlog events),是否需要去检查checksum,默认关闭 | |
Replication/control option | #备库复制worker线程数 #在并发复制时总共执行这么多次事务后做一次checkpoint,更新show slave status的数据 #在复制执行这么长时间后做一次checkpoint #在多线程复制时,在队列中Pending的事件所占用的最大内存,默认为16M,如果内存富余,或者延迟较大时,可以适当调大;注意这个值要比主库的max_allowed_packet大 #备库是否允许批量更新,只用于ndb cluster #备库SQL线程是否检查binlog的checksum
| |
Replication/binlog | #默认为CRC32,表示使用该算法记录binlog checksum,设置为NONE,则关闭checksum #表示在做group commit之前多长时间从刷新队列读取事务。默认值为0,表示没有超时,直到队列为空为止 binlog_order_commits #开启该选项时,事务提交顺序和binlog记录顺序是相同的,默认打开;设置为关闭时,事务提交顺序可能是并行的;关闭可能提升性能 #binlog记录格式 binlog_rows_query_log_events #行模式下,是否记录query #默认关闭,表示使用v2版本的binlog格式,打开的话,则使用之前版本的binlog格式 | |
Innodb层 | ||
Innodb buffer pool restore/dump |
.
| |
flush strategy | #新参数O_DIRECT_NO_FSYNC,在IO时使用O_DIRECT,但不再随后做fsync,可以参考bug#45892的描述;这种配置不适合一些文件系统,因为metadata没有被fsync到磁盘 #影响page cleaner 线程一次扫描LRU/UNZIP_LRU的深度,默认为1024,IO能力强的可以适当调大 #该值表示redo log的一个最低容量限制百分比,默认为10,当没有达到这个值时,则不会page cleaner线程不会根据redo来判断是否刷页,细节见函数af_get_pct_for_lsn ##防止在到达innodb_max_dirty_pages_pct时疯狂刷新,而是在达到这样一个限定值时,开始“优雅”的做刷新脏页(预刷新)。详细见函数af_get_pct_for_dirty #当flush操作落后太多时,可能会做一些非常有侵略性的刷新(超过指定的innodb_io_capacity),这会影响到正常的业务,指定这个值,可以限制io capacity的上限,减少对正常应用的影响 #这个选项可以控制adaptive flush对工作负载变化的响应速度。在这么多次loop内,innodb会保持上次的刷新状态快照不变,增加这个值有助于刷新操作更加平稳,而减小这个值有助于对工作负载的变化更快的调整adaptive flush,不过,如果设置的过小的话,在突然增大/减小的工作的负载中,容易引起性能尖峰 #当innodb_flush_log_at_trx_commit设置为2时,表示超过这么多秒,刷日志
| |
Change buffer | #changebuffer占用bp的最大比例,默认为25 | |
全文索引 | innodb_ft_aux_table innodb_ft_cache_size innodb_ft_enable_diag_print innodb_ft_enable_stopword innodb_ft_max_token_size innodb_ft_min_token_size innodb_ft_num_word_optimize innodb_ft_server_stopword_table innodb_ft_sort_pll_degree innodb_ft_user_stopword_table innodb_optimize_fulltext_only | |
索引统计 |
#物化统计信息,默认打开
#当打开innodb_stats_persistent选项时,这个设置才生效
#当关闭innodb_stats_persistent选项时生效,采样page数(尤其是后者)不应该设置的太大,否则会产生额外的IO开销,但也不应设置的太小,否则会导致查询计划不准确
#用于决定是否在表上存在大量更新时(超过10%的记录更新)重新计算统计信息。默认打开,如果关闭该选项,就需要在每次创建索引或者更改列之后,运行一次ANALYZE TABLE命令来更新统计信息,否则可能选择错误的执行计划。同样的,也可以在CREATE TABLE/ALTER TABLE命令中指定STATS_AUTO_RECALC值 | |
Compressed table |
#定义压缩表的压缩级别,在具有较好压缩特性的数据集上,可以适当调小该值,还获得更好的TPS性能 #该参数和下面的参数来自facebook对压缩表的改进,当一个非压缩page无法压缩到指定size时,会产生索引分裂,这会大大影响性能,我们可以给非压缩页留一些空白,少存一点数据,这样会降低压缩失败率,但也有可能减小压缩比,该选项表示当压缩失败率高于这个值时,进行apdative padding #一个非压缩page上最大允许留白的百分比 #表示是否统计每个表的每个索引的压缩状态,如果打开,信息会进行收集,并显示在information_schema的INNODB_CMP_PER_INDEX/INNODB_CMP_PER_INDEX_RESET中,这会有一定的性能损耗 | |
Control option | #保存全部死锁信息 #表示在使用automic进行进入innodb层并发控制时的自适应sleep时间的最大值 #purge线程数,可以加快purge速度 #设置该参数可以在只读媒介上启动Innodb,这也意味着我们可以开启多个实例,对同一份数据集做纯读操作 #1MB ~ 1/LOG_GROUP*BP, 48G BP& 4 instance的话,12GB为上限过大的值不兼容 #设置该选项表示操作系统不对merge-sort的临时文件cache,使用O_DIRECT #信号量等待队列最大长度 #更快的checksum算法(crc32) | |
Online DDL&& index create | #online ddl时并发DML产生的row log最大size,超过这个限制会导致DDL回滚 #创建索引做merge-sort时,一个归并block的大小 | |
Innodb API | innodb_api_bk_commit_interval innodb_api_disable_rowlock innodb_api_enable_binlog innodb_api_enable_mdl innodb_api_trx_level innodb_autoextend_increment | |
Memcache plugin | daemon_memcached_enable_binlog daemon_memcached_engine_lib_name daemon_memcached_engine_lib_path daemon_memcached_option daemon_memcached_r_batch_size daemon_memcached_w_batch_size | |
Undo log | #undo 表空间的个数,将所有的回滚段平分到这么多个ibd表空间文件中,这个值一旦设置,则不可更改。配置这个及下面的选项,是为了将undolog从Ibdata中独立出来,并且由于undo log是随机写,可以放到SSD盘上来提高性能 #表示undo log表空间文件的路径,启动前设置 #等同于老版本的innodb_rollback_segments | |
Read ahead | innodb_random_read_ahead innodb_read_ahead_threshold #将其设置为0 ,可以关闭线性预读,对于随机读写,我们推荐关闭 | |