聊聊MySQL中的参数
前言:
在前面一些文章中,经常能看到介绍某某参数的作用,可能有些小伙伴仍搞不清楚MySQL参数是啥。本篇文章我们来聊聊MySQL参数,学习下如何管理维护MySQL参数。
1.MySQL参数概念
我们所说的参数在官方文档中称为系统变量(systemvariable),不同的变量有着不同的作用。MySQL服务端维护了许多表示其配置的系统变量,所有变量均有默认值。一般可以在启动命令行中或配置文件中对它们进行设置。
系统变量分为全局系统变量(global)和会话系统变量(session)。有些变量既有全局变量又有会话变量,有些变量只有全局变量。全局变量影响服务器的全局操作,会话变量只影响具体客户端连接相关操作。若会话变量未单独设置,则继承自相应全局变量。
MySQL服务启动时,会按照配置文件或命令行中指定的选项来给全局变量赋值,没有指定则按默认值处理。服务启动后,通过连接服务器并执行SETGLOBALvar_name语句可以动态更改部分全局变量的值。要想更改全局变量,必须具有SUPER权限。MySQL还为每个客户端连接维护会话变量,连接时使用相应全局变量的当前值对客户端会话变量进行初始化。客户端可以通过SETSESSIONvar_name语句来动态更改会话变量。设置会话变量不需要特殊权限,但会话变量只作用于当前连接。
2.参数查询与变更示例
这里也要说明下,并不是所有的参数都可以动态修改,某些参数只能写入配置文件然后重启数据库才能生效。下面我们来展示下MySQL参数的查询与修改。
#参数查询 showglobalvariableslike'var_name';//查看全局系统变量的值,可使用%通配符 showsessionvariableslike'var_name';//查看会话系统变量的值 showvariableslike'var_name';//优先返回会话系统变量,若会话系统变量不存在,则返回全局系统变量。 #也可用select查询某个特定参数 select@@global.var_name;//全局系统变量 select@@session.var_name;//会话系统变量 select@@var_name;//优先会话系统变量 #查询示例 mysql>showglobalvariableslike'server_id'; +---------------+---------+ |Variable_name|Value| +---------------+---------+ |server_id|1003306| +---------------+---------+ 1rowinset(0.00sec) mysql>showglobalvariableslike'log_bin%'; +---------------------------------+-------------------------------+ |Variable_name|Value| +---------------------------------+-------------------------------+ |log_bin|ON| |log_bin_basename|/data/mysql/logs/binlog| |log_bin_index|/data/mysql/logs/binlog.index| |log_bin_trust_function_creators|ON| |log_bin_use_v1_row_events|OFF| +---------------------------------+-------------------------------+ 5rowsinset(0.00sec) mysql>select@@server_id; +-------------+ |@@server_id| +-------------+ |1003306| +-------------+ 1rowinset(0.00sec) #动态修改参数 setglobalvar_name=value; setsessionvar_name=value; setvar_name=value; set@@global.var_name=value; set@@session.var_name=value; set@@var_name=value; #参数修改示例 mysql>setglobalsort_buffer_size=2097152; QueryOK,0rowsaffected(0.00sec) mysql>setsessionsort_buffer_size=4194304; QueryOK,0rowsaffected(0.00sec) mysql>select@@global.sort_buffer_size,@@session.sort_buffer_size; +---------------------------+----------------------------+ |@@global.sort_buffer_size|@@session.sort_buffer_size| +---------------------------+----------------------------+ |2097152|4194304| +---------------------------+----------------------------+ 1rowinset(0.00sec)
参数动态修改后,建议将其写入配置文件。因为动态修改的参数在MySQL服务重启后会失效,只有写入配置文件才能够重启后仍有效。对于一些无法动态修改的参数,我们只能通过修改配置文件,然后重启来使之生效。这里所说的配置文件就是my.cnf文件了,Linux系统一般在/etc目录下;Windows系统一般在basedir目录下,名称可命名为my.ini。大部分参数需要配置在[mysqld]下,一份简单的配置文件示例如下:
vi/etc/my.cnf #简单模板如下: [mysqld] user=mysql datadir=/data/mysql/data socket=/data/mysql/tmp/mysql.sock pid-file=/data/mysql/tmp/mysqld.pid skip_name_resolve=1 max_connections=2000 lower_case_table_names=1 log_timestamps=SYSTEM max_allowed_packet=32M ...
MySQL参数一般由DBA或运维来维护,可能有些同学对这些参数还比较陌生。建议在数据库初始化时,根据服务器规格设置对应的数据库参数。对于不清楚作用的参数,建议保持默认值即可。关于更多参数相关的内容,可以参考官方文档:
https://dev.mysql.com/doc/refman/5.7/en/server-system-variable-reference.html
总结:
本篇文章详细讲述了MySQL参数相关概念及查询更改方法,希望各位小伙伴能学到相关知识。
以上就是MySQL中的参数是什么的详细内容,更多关于MySQL参数的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。