``参数,也被称之为MySQL的系统变量,这些变量是影响MySQL运行的关键,对每个参数做出不同调整,都有可能直接影响到线上数据库的性能,具体的完整系统参数可参考《MySQL官网文档-系统变量》,官方提供的系统参数数量大致如下:
通过xpath的方式提取数据,大概能够得知MySQL系统变量大概一千个上下,因此这里就不做过多的详细介绍,简单介绍一些较为常用的即可,其他具体的可参考前面给出的官网链接。
但是要注意,虽说
MySQL中有一千多个对外暴露的系统参数,但并不是所有的参数都可以让用户调整,MySQL的系统参数分为了三类:
一类是由MySQL自己维护的参数,这类参数用户无法调整。
第二类是以配置文件的形式加载的参数,这类参数必须在MySQL停机的情况下才能更改。
第三类是运行时的系统参数,这类是可以由用户去做动态调整的。
咱们需要关心的重点就是第三类参数,那如何观察这类参数呢?方式如下:
-
•
show global variables;:查看全局所有用户级别可以看到的系统变量。 -
•
show session variables; | show variables;:查看当前会话的所有系统变量。 -
•
show variables like '%关键字%';:使用模糊查询搜索某个系统变量。
MySQL5.1与MySQL8.0版本的执行结果如下:

可以很明显的从结果中得知:MySQL5.1版本中存在278个系统变量,MySQL8.0版本中存在557个系统变量,这仅仅只是社区版,而在商业版的MySQL中,其系统参数会更多,下面调出一些重点来聊一聊。
• max_connections:MySQL的最大连接数,超出后新到来的连接会阻塞或被拒绝。
• version:当前数据库的版本。
• ft_min_word_len:使用MyISAM引擎的表中,全文索引最小搜索长度。
• ft_max_word_len:使用MyISAM引擎的表中,全文索引最大搜索长度。
• ft_query_expansion_limit:MyISAM中使用with query expansion搜索的最大匹配数。
• innodb_ft_min_token_size:InnoDB引擎的表中,全文索引最小搜索长度。
• innodb_ft_max_token_size:InnoDB引擎的表中,全文索引最大搜索长度。
• optimizer_switch:MySQL隐藏参数的开关。
• skip_scan:是否开启索引跳跃扫描机制。
• innodb_page_size:InnoDB引擎数据页的大小。
• tx_isolation:事务的隔离级别。
• autocommit:事务自动提交机制。
• innodb_autoinc_lock_mode:插入意向锁的工作模式。
• innodb_lock_wait_timeout:InnoDB锁冲突时,阻塞的超时时间。
• innodb_deadlock_detect:是否开启InnoDB死锁检测机制。
• innodb_max_undo_log_size:本地磁盘文件中,Undo-log的最大值,默认1GB。
• innodb_rollback_segments:指定回滚段的数量,默认为1个。
• innodb_undo_directory:指定Undo-log的存放目录,默认放在.ibdata文件中。
• innodb_undo_logs:指定回滚段的数量,默认为128个,也就是之前的innodb_rollback_segments。
• innodb_undo_tablespaces:指定Undo-log分成几个文件来存储,必须开启innodb_undo_directory参数。
• back_log:回滚日志的最大回撤长度(一条数据的最长版本链长度)。
• innodb_undo_log_truncate:是否开启Undo-log的压缩功能,即日志文件超过一半时自动压缩,默认关闭。
• innodb_flush_log_at_trx_commit:设置redo_log_buffer的刷盘策略,默认每次提交事务都刷盘。
• innodb_log_group_home_dir:指定redo-log日志文件的保存路径,默认为./。
• innodb_log_buffer_size:指定redo_log_buffer缓冲区的大小,默认为16MB。
• innodb_log_files_in_group:指定redo日志的磁盘文件个数,默认为2个。
• innodb_log_file_size:指定redo日志的每个磁盘文件的大小限制,默认为48MB。
• innodb_log_write_ahead_size:设置checkpoint刷盘机制每次落盘动作的大小。
• innodb_log_compressed_pages:是否对Redo日志开启页压缩机制,默认ON。
• innodb_log_checksums:Redo日志完整性效验机制,默认开启。
• log_bin:是否开启bin-log日志,默认ON开启,表示会记录变更DB的操作。
• log_bin_basename:设置bin-log日志的存储目录和文件名前缀,默认为./bin.0000x。
• log_bin_index:设置bin-log索引文件的存储位置,因为本地有多个日志文件,需要用索引来确定目前该操作的日志文件。
• binlog_format:指定bin-log日志记录的存储方式,可选Statment、Row、Mixed。
• max_binlog_size:设置bin-log本地单个文件的最大限制,最多只能调整到1GB。
• binlog_cache_size:设置为每条线程的工作内存,分配多大的bin-log缓冲区。
• sync_binlog:控制bin-log日志的刷盘频率。
• binlog_do_db:设置后,只会收集指定库的bin-log日志,默认所有库都会记录。
• log-error:error-log错误日志的保存路径和名字。
• slow_query_log:设置是否开启慢查询日志,默认OFF关闭。
• slow_query_log_file:指定慢查询日志的存储目录及文件名。
• general_log:是否开启查询日志,默认OFF关闭。
• general_log_file:指定查询日志的存储路径和文件名。
• innodb_buffer_pool_size:InnoDB缓冲区的大小。
• innodb_adaptive_hash_index:是否开启InnoDB的自适应哈希索引机制。
• innodb_compression_level:调整压缩的级别,可控范围在1~9,越高压缩效果越好,但压缩速度也越慢。
• innodb_compression_failure_threshold_pct:当压缩失败的数据页超出该比例时,会加入数据填充来减小失败率,为0表示禁止填充。
• innodb_compression_pad_pct_max:一个数据页中最大允许填充多少比例的空白数据。
• innodb_log_compressed_pages:控制是否对redo-log日志的数据也开启压缩机制。
• innodb_cmp_per_index_enabled:是否对索引文件开启压缩机制。
• character_set_client:客户端的字符编码格式。
• character_set_connection:数据库连接的字符编码格式。
• character_set_database:数据库的字符编码格式。
• character_set_results:返回的结果集的编码格式。
• character_set_server:MySQL-Server的字符编码格式。
• character_set_system:系统的字符编码格式。
• collation_database:数据库的字符排序规则。
• :剩下的就不再列出来了,大家可根据查询出的变量名,去官网文档查询释义即可。
5315

被折叠的 条评论
为什么被折叠?



