查看和修改MySQL数据库参数

查看和修改MySQL数据库参数

MySQL依赖大量的参数来控制SQL的处理执行过程。mysql.cnf文件是mysql默认的参数配置文件,mysql启动时会优先在一些特定位置寻找并读取该文件。my.cnf不存在时并不会影响MySQL实例的初始化启动,参数值取决于编译MySQL时指定默认值和源代码中指定参数的默认值。

一、MySQL参数的分类

MySQL参数可以分为静态(static)参数和动态(dynamic)参数,区别在于参数值是否可以在实例的生命周期内修改并生效。

1、静态参数

静态参数在数据库启动期间不能被修改。静态参数设置之后必须要重启才能生效。比如:log_slave_updates,back_log,log_bin,lower_case_table_names。对于静态参数,没有global级和session级区分。

2、动态参数

动态参数在数据库启动期间能被修改,动态参数又分为两种:global级,session级。session作用域修改后不影响其他已经开启和之后开启的session。global作用域参数值修改后,修改前已经开启的session不会生效,会在新创建的session中生效。

二、MySQL参数查看

以wait_timeout参数为例:

1、global级参数的查看

方法一:

mysql> select @@global.wait_timeout;
+-----------------------+
| @@global.wait_timeout |
+-----------------------+
|                 28800 |
+-----------------------+
1 row in set (0.00 sec)

方法二:

mysql> show global variables like '%wait_timeout%';
+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| innodb_lock_wait_timeout | 50       |
| lock_wait_timeout        | 31536000 |
| wait_timeout             | 28800    |
+--------------------------+----------+
3 rows in set (0.01 sec)

方法三:

mysql> select * from performance_schema.global_variables where variable_name ='wait_timeout';
+---------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+---------------+----------------+
| wait_timeout  | 28800          |
+---------------+----------------+
1 row in set (0.00 sec)

mysql> select * from performance_schema.global_variables where variable_name like '%wait_timeout%';
+--------------------------+----------------+
| VARIABLE_NAME            | VARIABLE_VALUE |
+--------------------------+----------------+
| innodb_lock_wait_timeout | 50             |
| lock_wait_timeout        | 31536000       |
| wait_timeout             | 28800          |
+--------------------------+----------------+
3 rows in set (0.01 sec)

2、session级参数的查看

方法一:

mysql> select @@wait_timeout;
+----------------+
| @@wait_timeout |
+----------------+
|          28800 |
+----------------+
1 row in set (0.00 sec)

方法二:

mysql> select @@session.wait_timeout;
+------------------------+
| @@session.wait_timeout |
+------------------------+
|                  28800 |
+------------------------+
1 row in set (0.00 sec)

方法三:

mysql> show variables like '%wait_timeout%';
+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| innodb_lock_wait_timeout | 50       |
| lock_wait_timeout        | 31536000 |
| wait_timeout             | 28800    |
+--------------------------+----------+
3 rows in set (0.00 sec)

方法四:

mysql> show session variables like '%wait_timeout%';
+--------------------------+----------+
| Variable_name            | Value    |
+--------------------------+----------+
| innodb_lock_wait_timeout | 50       |
| lock_wait_timeout        | 31536000 |
| wait_timeout             | 28800    |
+--------------------------+----------+
3 rows in set (0.00 sec)

方法五:

mysql> select * from performance_schema.session_variables where variable_name like '%wait_timeout%';
+--------------------------+----------------+
| VARIABLE_NAME            | VARIABLE_VALUE |
+--------------------------+----------------+
| innodb_lock_wait_timeout | 50             |
| lock_wait_timeout        | 31536000       |
| wait_timeout             | 28800          |
+--------------------------+----------------+
3 rows in set (0.00 sec)

三、MySQL参数修改

1、session级参数的修改

方法一:

mysql> set wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)

方法二:

mysql> set session wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)

方法三:

mysql> set @@wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)

方法四:

mysql> set @@session.wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)

2、global级参数的修改

方法一:

mysql> set global wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)

方法二:

mysql> set @@global.wait_timeout=10;
Query OK, 0 rows affected (0.00 sec)

四、将参数值设置为MySQL的默认值

1、session级参数

mysql> set wait_timeout=DEFAULT;
Query OK, 0 rows affected (0.00 sec)

2、global级参数

mysql> set global wait_timeout=DEFAULT;
Query OK, 0 rows affected (0.00 sec)

五、静态参数的修改以及使动态参数永久生效

如果需要使动态参数的设置永久生效,必须修改参数文件并重启MySQL生效。而静态参数只能通过修改参数文件使之生效。比如:

# vi /etc/my.cnf
[mysqld]
wait_timeout=10

猜你喜欢

转载自blog.csdn.net/weixin_44377973/article/details/107069009