MySQL 参数相关概念及查询更改方法

作者:MySQL技术 时间:2024-01-15 02:17:54 

前言:

在前面一些文章中,经常能看到介绍某某参数的作用,可能有些小伙伴仍搞不清楚 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)

参数动态修改后,建议将其写入配置文件。因为动态修改的参数在 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 参数相关概念及查询更改方法,希望各位小伙伴能学到相关知识。

来源:https://segmentfault.com/a/1190000023891799?utm_source=tuicool&utm_medium=referral

标签:参数,MySQL,查询
0
投稿

猜你喜欢

  • Python安全获取域管理员权限几种方式操作示例

    2022-10-04 01:14:15
  • PHP PDOStatement::fetch讲解

    2023-06-04 20:06:02
  • Python实现Event回调机制的方法

    2021-04-10 12:33:29
  • 页面包含的处理

    2024-05-09 09:04:18
  • 浅谈pytorch中的nn.Sequential(*net[3: 5])是啥意思

    2023-10-05 05:42:55
  • Python reversed反转序列并生成可迭代对象

    2022-07-10 04:51:41
  • asp base64 utf-8为了兼容asp.net的base64

    2011-03-10 10:47:00
  • python实现的汉诺塔算法示例

    2023-09-21 11:28:17
  • python二分查找算法的递归实现方法

    2023-05-12 23:22:48
  • Flask项目中实现短信验证码和邮箱验证码功能

    2022-02-24 00:12:58
  • 10款最佳Python开发工具推荐,每一款都是神器

    2022-04-13 06:54:13
  • python对json的相关操作实例详解

    2022-03-27 20:15:06
  • ASP调用数据库常见错误的解决

    2007-09-07 10:05:00
  • python3 requests 各种发送方式详解

    2021-04-06 09:03:22
  • JavaScript中跨域问题的深入理解

    2024-04-28 09:41:55
  • Python查看Tensor尺寸及查看数据类型的实现

    2023-06-06 15:24:54
  • MySQL中使用流式查询避免数据OOM

    2024-01-23 01:23:00
  • python+JS 实现逆向 SMZDM 的登录加密

    2023-09-22 05:38:55
  • Go语言中的Slice学习总结

    2023-07-22 23:33:37
  • jquery学习笔记之无new构建详解

    2024-04-22 22:20:20
  • asp之家 网络编程 m.aspxhome.com