[MySQL 5.6] 5.6新参数 (完全版)

以下列出了MySQL 5.6的一些新参数 || 老参数新功能,有一些的说明只是参照的文档,还没有从代码求证。

这些参数的分类也显示了5.6在不同层面的改进(or regression?)

不定期更新Ing…

/////////////////////////////////////////

Server 层参数
Table cache table_open_cache_instances#对table cache进行划分,减少table cache的锁竞争
Meta data lock metadata_locks_hash_instances  # 对server层的metalock hash进行划分

metadata_locks_cache_size   #metadata lock cache的大小,这是总的大小,可以适当调大来提升并发度

Slow_log

log_throttle_queries_not_using_indexes  #当打开log_queries_not_using_indexes 时,该变量用于限制每分钟写入slow log的日志条数

控制项 default_tmp_storage_engine  #用于控制在创建临时表时使用的存储引擎,默认为innodb

disconnect_on_expired_password#用于控制客户端如何处理失效的密码,默认打开

explicit_defaults_for_timestamp   #影响timestamp类型column的行为,具体见文档中的参数说明

host_cache_size  #存储host名字与iP的cache size

ignore_db_dirs  #使用,分割,用于控制是否忽略DATA目录下的db目录

Server id

server_uuid    #由系统自动生成的id,记录在data_dir/auto.cnf文件中,最好不要去尝试修改它

优化器

optimizer_switch  #用于控制优化器的行为,5.5也有该参数,但5.6能够控制更多的优化器行为,具体见文档

eq_range_index_dive_limit  #用于优化in(),以确认是否直接使用索引统计,在where条件中列的等值条件个数小于这个值时,使用index dive来估算行数,否则使用index statistics来估算;设置为0则禁用index statistics, index dive更准确但效率低,具体说明见文档

Optimizer trace

optimizer_trace

optimizer_trace_features

optimizer_trace_limit

optimizer_trace_max_mem_size

optimizer_trace_offset

end_markers_in_json

performance schema

大量用于控制PS表大小的参数,以Performance_schema_作为前缀,不一一列出

Replication/gtid

gtid_mode

enforce_gtid_consistency

gtid_next

gtid_owned

gtid_purged

gtid_executed

Replication/crash safe

relay_log_info_repository  #是以文件(FILE) 还是表(table)的方式记录relaylog坐标信息

master_info_repository  #是以文件(FILE) 还是表(table)的方式记录binlog信息

master_verify_checksum  #在读取binlog时(例如show binlog events),是否需要去检查checksum,默认关闭

Replication/control option

slave_parallel_workers  #备库复制worker线程数

 slave_checkpoint_group   #在并发复制时总共执行这么多次事务后做一次checkpoint,更新show slave status的数据

slave_checkpoint_period   #在复制执行这么长时间后做一次checkpoint

slave_pending_jobs_size_max   #在多线程复制时,在队列中Pending的事件所占用的最大内存,默认为16M,如果内存富余,或者延迟较大时,可以适当调大;注意这个值要比主库的max_allowed_packet大

slave_allow_batching  #备库是否允许批量更新,只用于ndb cluster

slave_sql_verify_checksum  #备库SQL线程是否检查binlog的checksum

slave_rows_search_algorithms

Replication/binlog

binlog_checksum  #默认为CRC32,表示使用该算法记录binlog checksum,设置为NONE,则关闭checksum

binlog_max_flush_queue_time  #表示在做group commit之前多长时间从刷新队列读取事务。默认值为0,表示没有超时,直到队列为空为止

binlog_order_commits    #开启该选项时,事务提交顺序和binlog记录顺序是相同的,默认打开;设置为关闭时,事务提交顺序可能是并行的;关闭可能提升性能

binlog_row_image             #binlog记录格式

binlog_rows_query_log_events   #行模式下,是否记录query

log_bin_use_v1_row_events     #默认关闭,表示使用v2版本的binlog格式,打开的话,则使用之前版本的binlog格式

Innodb层

Innodb buffer pool restore/dump

innodb_buffer_pool_load_at_startup

innodb_buffer_pool_dump_at_shutdown

innodb_buffer_pool_load_now.

innodb_buffer_pool_dump_now

innodb_buffer_pool_load_abort

innodb_buffer_pool_filename

flush strategy

innodb_flush_method   #新参数O_DIRECT_NO_FSYNC,在IO时使用O_DIRECT,但不再随后做fsync,可以参考bug#45892的描述;这种配置不适合一些文件系统,因为metadata没有被fsync到磁盘

innodb_lru_scan_depth  #影响page  cleaner 线程一次扫描LRU/UNZIP_LRU的深度,默认为1024,IO能力强的可以适当调大

innodb_adaptive_flushing_lwm  #该值表示redo log的一个最低容量限制百分比,默认为10,当没有达到这个值时,则不会page cleaner线程不会根据redo来判断是否刷页,细节见函数af_get_pct_for_lsn

innodb_max_dirty_pages_pct_lwm  ##防止在到达innodb_max_dirty_pages_pct时疯狂刷新,而是在达到这样一个限定值时,开始“优雅”的做刷新脏页(预刷新)。详细见函数af_get_pct_for_dirty

innodb_io_capacity_max  #当flush操作落后太多时,可能会做一些非常有侵略性的刷新(超过指定的innodb_io_capacity),这会影响到正常的业务,指定这个值,可以限制io capacity的上限,减少对正常应用的影响

innodb_flushing_avg_loops #这个选项可以控制adaptive flush对工作负载变化的响应速度。在这么多次loop内,innodb会保持上次的刷新状态快照不变,增加这个值有助于刷新操作更加平稳,而减小这个值有助于对工作负载的变化更快的调整adaptive flush,不过,如果设置的过小的话,在突然增大/减小的工作的负载中,容易引起性能尖峰

innodb_flush_log_at_timeout   #当innodb_flush_log_at_trx_commit设置为2时,表示超过这么多秒,刷日志

innodb_flush_neighbors

Change buffer

innodb_change_buffer_max_size  #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_sample_pages

#当打开innodb_stats_persistent选项时,这个设置才生效

innodb_stats_transient_sample_pages

#当关闭innodb_stats_persistent选项时生效,采样page数(尤其是后者)不应该设置的太大,否则会产生额外的IO开销,但也不应设置的太小,否则会导致查询计划不准确

innodb_stats_auto_recalc

#用于决定是否在表上存在大量更新时(超过10%的记录更新)重新计算统计信息。默认打开,如果关闭该选项,就需要在每次创建索引或者更改列之后,运行一次ANALYZE TABLE命令来更新统计信息,否则可能选择错误的执行计划。同样的,也可以在CREATE TABLE/ALTER TABLE命令中指定STATS_AUTO_RECALC值

Compressed table

innodb_compression_level

#定义压缩表的压缩级别,在具有较好压缩特性的数据集上,可以适当调小该值,还获得更好的TPS性能

 innodb_compression_failure_threshold_pct #该参数和下面的参数来自facebook对压缩表的改进,当一个非压缩page无法压缩到指定size时,会产生索引分裂,这会大大影响性能,我们可以给非压缩页留一些空白,少存一点数据,这样会降低压缩失败率,但也有可能减小压缩比,该选项表示当压缩失败率高于这个值时,进行apdative padding

innodb_compression_pad_pct_max  #一个非压缩page上最大允许留白的百分比

innodb_cmp_per_index_enabled #表示是否统计每个表的每个索引的压缩状态,如果打开,信息会进行收集,并显示在information_schema的INNODB_CMP_PER_INDEX/INNODB_CMP_PER_INDEX_RESET中,这会有一定的性能损耗

Control option

innodb_print_all_deadlocks #保存全部死锁信息

innodb_adaptive_max_sleep_delay #表示在使用automic进行进入innodb层并发控制时的自适应sleep时间的最大值

innodb_purge_threads #purge线程数,可以加快purge速度

innodb_read_only #设置该参数可以在只读媒介上启动Innodb,这也意味着我们可以开启多个实例,对同一份数据集做纯读操作

innodb_log_file_size  #1MB ~ 1/LOG_GROUP*BP, 48G BP& 4 instance的话,12GB为上限过大的值不兼容

innodb_disable_sort_file_cache  #设置该选项表示操作系统不对merge-sort的临时文件cache,使用O_DIRECT

innodb_sync_array_size    #信号量等待队列最大长度

innodb_checksum_algorithm   #更快的checksum算法(crc32)

Online DDL&& index create

innodb_online_alter_log_max_size   #online ddl时并发DML产生的row log最大size,超过这个限制会导致DDL回滚

innodb_sort_buffer_size   #创建索引做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

innodb_undo_tablespaces  #undo 表空间的个数,将所有的回滚段平分到这么多个ibd表空间文件中,这个值一旦设置,则不可更改。配置这个及下面的选项,是为了将undolog从Ibdata中独立出来,并且由于undo log是随机写,可以放到SSD盘上来提高性能

innodb_undo_directory  #表示undo log表空间文件的路径,启动前设置

innodb_undo_logs  #等同于老版本的innodb_rollback_segments

Read ahead

innodb_random_read_ahead

innodb_read_ahead_threshold  #将其设置为0 ,可以关闭线性预读,对于随机读写,我们推荐关闭

 


上一篇:《WCF技术剖析》博文系列汇总[持续更新中]


下一篇:消息中间件系列五、rabbit消息的确认机制