数据库教程: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数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/909157.html

(0)
上一篇 2021年10月23日
下一篇 2021年10月23日

精彩推荐