聊聊MySQL中的参数
前言:
在前面一些文章中,经常能看到介绍某某参数的作用,可能有些小伙伴仍搞不清楚 MySQL 参数是啥。本篇文章我们来聊聊 MySQL 参数,学习下如何管理维护 MySQL 参数。
1.MySQL参数概念
我们所说的参数在官方文档中称为 系统变量(system variable),不同的变量有着不同的作用。MySQL 服务端维护了许多表示其配置的系统变量,所有变量均有默认值。一般可以在启动命令行中或配置文件中对它们进行设置。
系统变量分为全局系统变量(global)和会话系统变量(session)。有些变量既有全局变量又有会话变量,有些变量只有全局变量。全局变量影响服务器的全局操作,会话变量只影响具体客户端连接相关操作。若会话变量未单独设置,则继承自相应全局变量。
MySQL 服务启动时,会按照配置文件或命令行中指定的选项来给全局变量赋值,没有指定则按默认值处理。服务启动后,通过连接服务器并执行 SET GLOBAL var_name 语句可以动态更改部分全局变量的值。要想更改全局变量,必须具有 SUPER 权限。MySQL 还为每个客户端连接维护会话变量,连接时使用相应全局变量的当前值对客户端会话变量进行初始化。客户端可以通过 SET SESSION var_name 语句来动态更改会话变量。设置会话变量不需要特殊权限,但会话变量只作用于当前连接。
2.参数查询与变更示例
这里也要说明下,并不是所有的参数都可以动态修改,某些参数只能写入配置文件然后重启数据库才能生效。下面我们来展示下 MySQL 参数的查询与修改。
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | # 参数查询 show global variables like 'var_name' ; //查看全局系统变量的值,可使用%通配符 show session variables like 'var_name' ; //查看会话系统变量的值 show variables like 'var_name' ; //优先返回会话系统变量,若会话系统变量不存在,则返回全局系统变量。 # 也可用 select 查询某个特定参数 select @@ global .var_name; //全局系统变量 select @@session.var_name; //会话系统变量 select @@var_name; //优先会话系统变量 # 查询示例 mysql> show global variables like 'server_id' ; + ---------------+---------+ | Variable_name | Value | + ---------------+---------+ | server_id | 1003306 | + ---------------+---------+ 1 row in set (0.00 sec) mysql> show global variables like '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 | + ---------------------------------+-------------------------------+ 5 rows in set (0.00 sec) mysql> select @@server_id; + -------------+ | @@server_id | + -------------+ | 1003306 | + -------------+ 1 row in set (0.00 sec) # 动态修改参数 set global var_name = value; set session var_name = value; set var_name = value; set @@ global .var_name = value; set @@session.var_name = value; set @@var_name = value; # 参数修改示例 mysql> set global sort_buffer_size = 2097152; Query OK, 0 rows affected (0.00 sec) mysql> set session sort_buffer_size = 4194304; Query OK, 0 rows affected (0.00 sec) mysql> select @@ global .sort_buffer_size,@@session.sort_buffer_size; + ---------------------------+----------------------------+ | @@ global .sort_buffer_size | @@session.sort_buffer_size | + ---------------------------+----------------------------+ | 2097152 | 4194304 | + ---------------------------+----------------------------+ 1 row in set (0.00 sec) |
参数动态修改后,建议将其写入配置文件。因为动态修改的参数在 MySQL 服务重启后会失效,只有写入配置文件才能够重启后仍有效。对于一些无法动态修改的参数,我们只能通过修改配置文件,然后重启来使之生效。这里所说的配置文件就是 my.cnf 文件了,Linux 系统一般在 /etc 目录下;Windows 系统一般在 basedir 目录下,名称可命名为 my.ini 。大部分参数需要配置在 [mysqld] 下,一份简单的配置文件示例如下:
?1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 参数的资料请关注服务器之家其它相关文章!
原文链接:https://cloud.tencent.com/developer/article/1694854
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。