前言:

在前面一些文章中,经常能看到介绍某某参数的作用,可能有些小伙伴仍搞不清楚 MySQL 参数是啥。本篇文章我们来聊聊 MySQL 参数,学习下如何管理维护 MySQL 参数。

1.MySQL参数概念

我们所说的参数在官方文档中称为 系统变量(system variable),不同的变量有着不同的作用。MySQL 服务端维护了许多表示其配置的系统变量,所有变量均有默认值。一般可以在启动命令行中或配置文件中对它们进行设置。

系统变量分为全局系统变量(global)和会话系统变量(session)。有些变量既有全局变量又有会话变量,有些变量只有全局变量。全局变量影响服务器的全局操作,会话变量只影响具体客户端连接相关操作。若会话变量未单独设置,则继承自相应全局变量。

MySQL 服务启动时,会按照配置文件或命令行中指定的选项来给全局变量赋值,没有指定则按默认值处理。服务启动后,通过连接服务器并执行 SET GLOBAL var_name 语句可以动态更改部分全局变量的值。要想更改全局变量,必须具有 SUPER 权限。MySQL 还为每个客户端连接维护会话变量,连接时使用相应全局变量的当前值对客户端会话变量进行初始化。客户端可以通过 SET SESSION var_name 语句来动态更改会话变量。设置会话变量不需要特殊权限,但会话变量只作用于当前连接。

2.参数查询与变更示例

这里也要说明下,并不是所有的参数都可以动态修改,某些参数只能写入配置文件然后重启数据库才能生效。下面我们来展示下 MySQL 参数的查询与修改。

# 参数查询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)
vi /etc/my.cnf# 简单模板如下:[mysqld]user = mysql datadir = /data/mysql/data  socket = /data/mysql/tmp/mysql.sockpid-file = /data/mysql/tmp/mysqld.pid skip_name_resolve = 1max_connections = 2000lower_case_table_names = 1log_timestamps=SYSTEMmax_allowed_packet = 32M...

https://dev.mysql.com/doc/refman/5.7/en/server-system-variable-reference.html

总结:

本篇文章详细讲述了 MySQL 参数相关概念及查询更改方法,希望各位小伙伴能学到相关知识。

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Linux下MYSQL 5.7 找回root密码的问题(亲测可用)
  3. MySQL 什么时候使用INNER JOIN 或 LEFT JOIN
  4. mybatisplus的坑 insert标签insert into select无参数问题的解决
  5. Python技巧匿名函数、回调函数和高阶函数
  6. python list.sort()根据多个关键字排序的方法实现
  7. android中文api(89)——ViewManager
  8. Android调用天气预报的WebService简单例子
  9. Android(安卓)Activity的启动

随机推荐

  1. 多线程学习(三)那些队列可用于线程池
  2. 用翻译赚钱,翻译社规则调整
  3. Fedora写给Python的情书
  4. 值得关注的5个Python开源项目
  5. 2分钟理清计算机、Python和Pip的三角关系
  6. 用Python制作3D动画
  7. 如果你也用Win10,真的请备份!
  8. 不看教程,可能更浪费你的时间
  9. 在python中执行shell命令的6种方法
  10. 临摹源码 | 一比一手写Dubbo源码中的SPI(