当前位置: 首页 > news >正文

【Mysql】Mysql的启动选项和系统变量(二)

概述

在Mysql的设置项中一般都有各自的默认值,比方说mysql 5.7服务器端允许同时连入的客户端的默认数量是 151 ,表的默认存储引擎是 InnoDB ,我们可以在程序启动的时候去修改这些默认值,对于这种在程序启动时指定的设置项也称之为启动选项(startup options),这些选项控制着程序启动后的行为。在 MySQL 安装目录下的 bin 目录中的各种可执行文件,不论是服务器相关的程序(比如 mysqld 、 mysqld_safe )还是客户端相关的程序(比如 mysql 、mysqladmin ),在使用的时候有很多参数也可以自行指定。这些启动参数可以放在命令行中指定,也可以把它们放在配置文件中指定。下边我们会以 mysqld 为例,来说明放在不同位置的区别。

启动选项

在命令行使用选项

如果我们在启动客户端程序时在 -h 参数后边紧跟服务器的IP地址,这就意味着客户端和服务器之间需要通过TCP/IP 网络进行通信。在我测试环境中客户端程序和服务器程序都装在同一台服务器上,所以在使用客户端程序连接服务器程序时指定的主机名是 127.0.0.1 的情况下,客户端进程和服务器进程之间会使用 TCP/IP 网络进行通信。
如果我们在启动服务器程序的时候想禁止各客户端使用 TCP/IP 网络进行通信,可以在启动服务器程序的命令行里添加 skip-networking 启动选项,如下:
mysqld --skip-networking
可以看到,我们在命令行中指定启动选项时需要在选项名前加上 – 前缀。另外,如果选项名是由多个单词构成的,它们之间可以由短划线 - 连接起来,也可以使用下划线 _ 连接起来,也就是说 skip-networking 和skip_networking 表示的含义是相同的。所以上边的写法与下边的写法是等价的:
mysqld --skip_networking
在按照上述命令启动服务器程序后,如果我们再使用 mysql 来启动客户端程序时,再把服务器主机名指定为127.0.0.1 (IP地址的形式)的话会显示连接失败:

[root@k8s-m2 ~]# mysql -h127.0.0.1 -p
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

这就意味着我们指定的启动选项 skip-networking 生效了!
但是我们本机可以使用sock进行连接,注意自己环境中sock文件的实际位置。

[root@k8s-m2 ~]# mysql --socket=/usr/local/mysql/mysql.sock -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.30 Source distributionCopyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> ^DBye

再如,我们前边说过如果在创建表的语句中没有显式指定表的存储引擎的话,那就5.7版本的mysql会默认使用 InnoDB作为表的存储引擎。如果我们想改变表的默认存储引擎的话,可以这样写启动服务器的命令行:
mysqld --default-storage-engine=MyISAM
我们现在就已经把表的默认存储引擎改为 MyISAM 了,在客户端程序连接到服务器程序后试着创建一个表:

mysql> create table default_engine_table(i int);
Query OK, 0 rows affected (0.12 sec)

这个定义语句中我们并没有明确指定表的存储引擎,创建成功后再看一下这个表的结构:

mysql> show create table default_engine_table;
+----------------------+-------------------------------------------------------------------------------------------------------+
| Table                | Create Table                                                                                          |
+----------------------+-------------------------------------------------------------------------------------------------------+
| default_engine_table | CREATE TABLE `default_engine_table` (`i` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+----------------------+-------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

可以看到该表的存储引擎已经是 MyISAM 了,说明启动选项 default-storage-engine 生效了。
在启动服务器程序的命令行后边指定启动选项的通用格式就是这样的:
–启动选项1[=值1] --启动选项2[=值2] … --启动选项n[=值n]
也就是说我们可以将各个启动选项写在一行中,各个启动选项之间使用空白字符隔开,在每一个启动选项名称前边添加 – 。对于不需要值的启动选项,比如 skip-networking ,它们不需要指定对应的值。对于需要指定值的启动选项,比如 default-storage-engine 我们在指定这个设置项的时候需要显式的指定它的值。注意,在命令行上指定有值的启动选项时需要注意,选项名、=、选项值之间不能有空白字符。
每个MySQL程序都有很多不同的选项。大多数程序提供了一个–help选项,你可以查看该程序支持的全部启动选项以及它们的默认值。例如,使用 mysql --help 可以看到 mysql 程序支持的启动选项, mysqld_safe --help可以看到 mysqld_safe 程序支持的启动选项。查看 mysqld 支持的启动选项有些特别,需要使用 mysqld --verbose --help 。

选项的长形式和短形式

我们前边提到的 skip-networking 、 default-storage-engine 称之为长形式的选项(因为它们比较长),但是为了方便,有些选项可以简写,下面列举了一些我们常用的短形式写法。

长形式短形式含义
–host-h主机名
–user-u用户名
–password-p密码
–port-P端口
–version-V版本信息

短形式的选项名只有一个字母,使用时在选项名前只加一个短划线 - 前缀,而使用长形式选项时需要在选项名前加两个短划线 – 。
使用短形式指定启动选项时,选项名和选项值之间可以没有间隙,或者用空白字符隔开( -p 选项有些特殊, -p和密码值之间不能有空白字符)。其次,选项名是区分大小写的,比如 -p 和 -P 选项拥有完全不同的含义。

配置文件中使用选项

在命令行中设置启动选项只对当次启动生效,也就是说如果下一次重启程序的时候我们还想保留这些启动选项的话,还得重复把这些选项写到启动命令行中,这样是有点麻烦的。更好的方式是我们把需要设置的启动选项写在配置文件中,每次启动服务器的时候都从这个文件里加载相应的启动选项。由于这个配置文件可以长久的保存在计算机的硬盘里,所以只需我们配置一
次,以后就都不用显式的把启动选项都写在启动命令行中了,所以更推荐使用配置文件的方式来设置启动选项。

配置文件的路径

以Linux为例。MySQL 会按照下列路径来寻找配置文件:

路径名说明
/etc/my.cnf
/etc/mysql/my.cnf
SYSCONFDIR/my.cnf
$MYSQL_HOME/my.cnf特定于服务器的选项(仅限服务端)
defaults-extra-file命令行指定的额外配置文件路径
~/.my.cnf用户特定选项
~/.mylogin.cnf用户特定的登录路径选项(仅限客户端)
  • SYSCONFDIR 表示在使用 CMake 构建 MySQL 时使用 SYSCONFDIR 选项指定的目录。默认情况下,这是位于编译安装目录下的 etc 目录。
  • MYSQL_HOME 是一个环境变量,该变量的值是我们自己设置的,可设置可不设置。该变量的值代表一个路径,我们可以在该路径下创建一个 my.cnf 配置文件,那么这个配置文件中只能放置关于启动服务器程序相关的选项(言外之意就是其他的配置文件既能存放服务器相关的选项也能存放客户端相关的选项, .mylogin.cnf 除外,它只能存放客户端相关的一些选项)。
  • 列表中的最后两个以 ~ 开头的路径是用户相关的,Linux系统中都有一个当前登陆用户的概念,每个用户都可以有一个家目录, ~ 就代表这个家目录,大家可以查看 HOME 环境变量的值来确定一下当前用户的家目录,比方说我当前的root用户的家目录就是 /root 。之所以说列表中最后两个配置文件是用户相关的,是因为不同的Linux 系统的用户都可以在自己的用户目录下创建 .my.cnf 或者 .mylogin.cnf ,换句话说,不同登录用户使用的 .my.cnf 或者 .mylogin.cnf 配置文件可以是不同的。
  • defaults-extra-file 用来添加额外的配置文件路径
  • .mylogin.cnf 它不是一个纯文本文件(其他的配置文件都是纯文本文件),而是使用mysql_config_editor 实用程序创建的加密文件。文件中只能包含一些用于启动客户端软件时连接服务器的一些选项,包括 host 、user 、password 、 port 和 socket 。而且它只能被客户端程序所使用。

在实际使用中。服务器上的这几个路径中的任意一个都可以当作配置文件来使用,如果它们不存在,可以手动创建,比方说手动在 ~/.my.cnf 这个路径下创建一个配置文件。
另外,我们知道在使用 mysqld_safe 程序启动服务器时,会间接调用mysqld ,所以对于传递给 mysqld_safe 的启动选项来说,如果 mysqld_safe 程序不处理,会接着传递给mysqld 程序处理。比方说 skip-networking 选项是由 mysqld 处理的, mysqld_safe 并不处理,但是如果我们我们在命令行上这样执行:
mysqld_safe --skip-networking
则在 mysqld_safe 调用 mysqld 时,会把它处理不了的这个 skip-networking 选项交给 mysqld 处理。

配置文件的内容

与在命令行中指定启动选项不同的是,配置文件中的启动选项被划分为若干个组,每个组有一个组名,用中括号[] 扩起来,目前mysql中支持的组名有server 、mysqld 、mysqld_safe 、 client 、 mysql 、mysqladmin 。每个组下边可以定义若干个启动选项,我们以 [server] 组为例来看一下填写启动选项的形式(其他组中启动选项的形式是一样的):
[server]
option1 #这是option1,该选项不需要选项值
option2 = value2 #这是option2,该选项需要选项值

在配置文件中指定启动选项的语法类似于命令行语法,但是配置文件中只能使用长形式的选项。在配置文件中指定的启动选项不允许加 – 前缀,并且每行只指定一个选项,而且 = 周围可以有空白字符(命令行中选项名、= 、选项值之间不允许有空白字符)。另外,在配置文中,我们可以使用 # 来添加注释,从 # 出现直到行尾的内容都属于注释内容,读取配置文件时会忽略这些注释内容。
配置文件中不同的选项组是给不同的启动命令使用的,如果选项组名称与程序名称相同,则组中的选项将专门应用于该程序。例如,[mysqld] 和 [mysql] 组分别应用于 mysqld 服务器程序和 mysql 客户端程序。不过有两个选项组比较特别:

  • [server] 组下边的启动选项将作用于所有的服务器程序。
  • [client] 组下边的启动选项将作用于所有的客户端程序。

需要注意的一点是, mysqld_safe 和 mysql.server 这两个程序在启动时都会读取 [mysqld] 选项组中的内容。为了直观感受一下,我们挑一些启动命令来看一下它们能读取的选项组都有哪些:

启动命令类别能读取的组
启动命令类别能读取的组
mysqld启动服务器[mysqld] 、 [server]
mysqld_safe启动服务器[mysqld] 、 [server] 、 [mysqld_safe]
mysql.server启动服务器[mysqld] 、 [server] 、 [mysql.server]
mysql启动客户端[mysql] 、 [client]
mysqladmin启动客户端[mysqladmin] 、 [client]
mysqldump启动客户端[mysqldump] 、 [client]

现在我们以 Linux操作系统为例,在 /etc/my.cnf 这个配置文件中添加一些内容( Linux系统参考上边提到的配置文件路径):

vim /etc/my.cnf
[server]
default-storage-engine=MyISAM
#然后直接用 mysqld 启动服务器程序:
systemctl  start mysqld

虽然在命令行没有添加启动选项,但是在程序启动的时候,就会默认的到我们上边提到的配置文件路径下查找配置文件,其中就包括 /etc/my.cnf 。又由于systemctl start mysqld会调用/etc/init.d/mysqld文件,而该文件的mysqld命令可以读取 [server] 选项组的内容,所以default-storage-engine=MyISAM 这个选项是生效的。
注意:如果我们想指定mysql.server程序的启动参数,则必须将它们放在配置文件中,而不是放在命令行中。因为mysql.server仅支持start和stop作为命令行参数。

特定MySQL版本的专用选项组

我们可以在选项组的名称后加上特定的 MySQL 版本号,比如对于 [mysqld] 选项组来说,我们可以定义一个[mysqld-5.7] 的选项组,它的含义和 [mysqld] 一样,只不过只有版本号为 5.7 的 mysqld 程序才能使用这个选项组中的选项。

配置文件的优先级

我们前边说过 MySQL 将在某些固定的路径下搜索配置文件,我们也可以通过在命令行上指定 defaults-extrafile 启动选项来指定额外的配置文件路径。 MySQL 将按照我们在上表中给定的顺序依次读取各个配置文件,如果该文件不存在则忽略。值得注意的是,如果我们在多个配置文件中设置了相同的启动选项,那以最后一个配置文件中的为准。比方说 /etc/my.cnf 文件的内容是这样的:
[server]
default-storage-engine=InnoDB
而 ~/.my.cnf 文件中的内容是这样的:
[server]
default-storage-engine=MyISAM
又因为 ~/.my.cnf 比 /etc/my.cnf 顺序靠后,所以如果两个配置文件中出现相同的启动选项,以 ~/.my.cnf 中的为准,所以 MySQL 服务器程序启动之后, default-storage-engine 的值就是 MyISAM 。

同一个配置文件中多个组的优先级

我们说同一个命令可以访问配置文件中的多个组,比如 mysqld 可以访问 [mysqld] 、 [server] 组,如果在同一个配置文件中,比如 /etc/my.cnf ,在这些组里出现了同样的配置项,比如这样:
[server]
default-storage-engine=InnoDB
[mysqld]
default-storage-engine=MyISAM
那么,将以最后一个出现的组中的启动选项为准,比方说例子中 default-storage-engine 既出现在 [mysqld] 组也出现在 [server] 组,因为 [mysqld] 组在 [server] 组后边,所以以 [mysqld] 组中的配置项为最终使用配置。

defaults-file的使用

如果我们不想让 MySQL 到默认的路径下搜索配置文件(就是上表中列出的那些),可以在命令行指定 defaultsfile 选项,比如这样(以Linux 系统为例):
mysqld --defaults-file=/tmp/myconfig.cnf
这样,在程序启动的时候将只在 /tmp/myconfig.cnf路径下搜索配置文件。如果文件不存在或无法访问,则会发生错误。
注意:defaults-extra-filedefaults-file的区别,使用defaults-extra-file可以指定额外的
配置文件搜索路径(也就是说那些固定的配置文件路径也会被搜索)。

命令行和配置文件中启动选项的区别

在命令行上指定的绝大部分启动选项都可以放到配置文件中,但是有一些选项是专门为命令行设计的,比方说defaults-extra-file 、 defaults-file 这样的选项本身就是为了指定配置文件路径的,如果放在配置文件中使用就没啥意义了。其他的一些只能用在命令行上而不能用到配置文件中的启动选项我们后面用到的时候再具体说明。另外有一点需要特别注意,如果同一个启动选项既出现在命令行中,又出现在配置文件中,那么以命令行中的启动选项为准!比如我们在配置文件中写了:
[server]
default-storage-engine=InnoDB
而我们的启动命令是:
mysql.server start --default-storage-engine=MyISAM
那最后 default-storage-engine 的值是 MyISAM。

系统变量

系统变量简介

MySQL 服务器程序运行过程中会用到许多影响程序行为的变量,它们被称为 MySQL 系统变量,比如允许同时连入的客户端数量用系统变量 max_connections 表示,表的默认存储引擎用系统变量 default_storage_engine 表示,查询缓存的大小用系统变量 query_cache_size 表示, MySQL 服务器程序的系统变量有好几百条,每个系统变量都有一个默认值,我们可以使用命令行或者配置文件中的选项在启动服务器时改变一些系统变量的值。大多数的系统变量的值也可以在程序运行过程中修改,而无需停止并重新启动它。

系统变量的查看

我们可以使用下列命令查看 MySQL 服务器程序支持的系统变量以及它们的当前值:
SHOW VARIABLES [LIKE 匹配的模式];
由于系统变量 实在太多了,如果我们直接使用 SHOW VARIABLES 查看的话就直接刷屏了,我们可以指定查看某个系统变量,但是有很多的系统变量名我们可能记得不是很清楚,可以使用LIKE配合%进行模糊匹配过滤条件来查看我们需要的系统变量的值,%可以在任何位置,如下:

mysql> SHOW VARIABLES LIKE 'default_storage_engine';
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)mysql> SHOW VARIABLES LIKE 'default%';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | mysql_native_password |
| default_password_lifetime     | 0                     |
| default_storage_engine        | InnoDB                |
| default_tmp_storage_engine    | InnoDB                |
| default_week_format           | 0                     |
+-------------------------------+-----------------------+
5 rows in set (0.00 sec)

设置系统变量

通过启动选项设置

大部分的系统变量 可以通过启动服务器时传送启动选项的方式和通过配置文件添加启动选项两种方式来进行设置,如下:

  • 通过命令行添加启动选项:
    mysqld --default-storage-engine=MyISAM --max-connections=200
  • 通过配置文件添加启动选项:
    [server]
    default-storage-engine=MyISAM
    max-connections=200

注意:对于启动选项来说,如果启动选项名由多个单词组成,各个单词之间用短划线 - 或者下划线 _ 连接起来都可以,但是对应的系统变量之间必须使用下划线 _ 连接起来。

服务器程序运行过程中设置

对于大部分系统变量来说,它们的值可以在服务器程序运行过程中进行动态修改而无需停止并重启服务器。不过系统变量有作用范围之分,以下作一些说明。
设置不同作用范围的系统变量
我们前边说过,多个客户端程序可以同时连接到一个服务器程序。对于同一个系统变量,我们有时想让不同的客户端有不同的值。比方客户端A他想让当前客户端对应的默认存储引擎为 InnoDB ,所以他可以把系统变量 default_storage_engine 的值设置为 InnoDB ;客户端B想让当前客户端对应的默认存储引擎为 MyISAM ,所以他可以把系统变量default_storage_engine 的值设置为 MyISAM 。这样可以A和B两个客户端拥有不同的默认存储引擎,使用时互不影响,十分方便。但是这样各个客户端都私有一份系统变量会产生这么两个问题:

  • 某些系统变量并不是针对单个客户端的,比如允许同时连接到服务器的客户端数量max_connections ,查询缓存的大小 query_cache_size ,这些公有的系统变量让某个客户端私有显然不合适。
  • 一个新连接到服务器的客户端对应的系统变量的值该怎么设置?

Mysql中提出了系统变量的作用范围的概念,具体来说作用范围分为这两种:

  • GLOBAL :全局变量,影响服务器的整体操作。
  • SESSION :会话变量,影响某个客户端连接的操作。(注:SESSION 有个别名叫 LOCAL)

在服务器启动时,会将每个全局变量初始化为其默认值(可以通过命令行或选项文件中指定的选项更改这些默认值)。然后服务器还为每个连接的客户端维护一组会话变量,客户端的会话变量在连接时使用相应全局变量的当前值初始化。
以 default_storage_engine 举例,在服务器启动时会初始化一个名为default_storage_engine ,作用范围为 GLOBAL 的系统变量。之后每当有一个客户端连接到该服务器时,服务器
都会单独为该客户端分配一个名为 default_storage_engine ,作用范围为 SESSION 的系统变量,该作用范围为SESSION 的系统变量值按照当前作用范围为 GLOBAL 的同名系统变量值进行初始化。
显然,通过启动选项设置的系统变量的作用范围都是 GLOBAL 的,也就是对所有客户端都有效的,因为在系统启动的时候还没有客户端程序连接进来。

在服务器程序运行期间通过客户端程序设置系统变量的语法:
SET [GLOBAL|SESSION] 系统变量名 = 值;
或者写成这样也行:
SET [@@(GLOBAL|SESSION).]var_name = XXX;
比如我们想在服务器运行过程中把作用范围为 GLOBAL 的系统变量 default_storage_engine 的值修改为MyISAM ,也就是想让之后新连接到服务器的客户端都用 MyISAM 作为默认的存储引擎,那我们可以选择下边两条语句中的任意一条来进行设置:
语句一:SET GLOBAL default_storage_engine = MyISAM;
语句二:SET @@GLOBAL.default_storage_engine = MyISAM;

如果只想对本客户端生效,可以选择下边三条语句中的任意一条来进行设置:
语句一:SET SESSION default_storage_engine = MyISAM;
语句二:SET @@SESSION.default_storage_engine = MyISAM;
语句三:SET default_storage_engine = MyISAM;
从上边的 语句三也可以看出,如果在设置系统变量的语句中省略了作用范围,默认的作用范围就是 SESSION 。也就是说 SET 系统变量名 = 值 和 SET SESSION 系统变量名 = 值 是等价的。
查看不同作用范围的系统变量
系统变量有作用范围之分,那我们的 SHOW VARIABLES 语句查看的是什么作用范围的系统变量呢?答案是默认查看的是 SESSION 作用范围的系统变量。
当然我们也可以在查看系统变量的语句上加上要查看哪个作用范围的系统变量,如下具体指明:SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];

如下设置并查看系统变量的过程:

mysql> show session variables like "default_storage_engine";
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.00 sec)mysql> show global  variables like "default_storage_engine";
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.00 sec)mysql> set session default_storage_engine=myisam;
Query OK, 0 rows affected (0.00 sec)mysql> show session variables like "default_storage_engine";
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | MyISAM |
+------------------------+--------+
1 row in set (0.00 sec)mysql> show global  variables like "default_storage_engine";
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
1 row in set (0.01 sec)

可以看到,最初 default_storage_engine 的系统变量无论是在 GLOBAL 作用范围上还是在 SESSION 作用范围上的值都是 InnoDB ,我们在 SESSION 作用范围把它的值设置为 MyISAM 之后,可以看到 GLOBAL 作用范围的值并没有改变。
注意:如果某个客户端改变了某个系统变量在GLOBAL作用范围的值,并不会影响该系统变量在当前已经连接的客户端作用范围为SESSION的值,只会影响后续连入的客户端在作用范围为SESSION的值。
注意事项:

  • 并不是所有系统变量都具有 GLOBAL 和 SESSION 的作用范围。
    • 有一些系统变量只具有 GLOBAL 作用范围,比方说 max_connections ,表示服务器程序支持同时最多有多少个客户端程序进行连接。
    • 有一些系统变量只具有 SESSION 作用范围,如 insert_id ,表示在对某个包含 AUTO_INCREMENT 列的表进行插入时,该列初始的值。
    • 有一些系统变量的值既具有 GLOBAL 作用范围,也具有 SESSION 作用范围,比如我们前边用到的default_storage_engine ,而且其实大部分的系统变量都是这样的。
  • 有些系统变量是只读的,并不能设置值。
    比方说 version相关的 ,表示当前 MySQL 版本的相关信息,我们客户端是不能设置改变它的,只能使用SHOW VARIABLES 语句里查看。

启动选项和系统变量的区别

启动选项是在程序启动时我们程序员传递的一些参数,而系统变量是影响服务器程序运行行为的变量,它们之间的关系如下:

  • 大部分的系统变量都可以被当作启动选项传入。
  • 有些系统变量是在程序运行过程中自动生成的,是不可以当作启动选项来设置,比如
    auto_increment_offset 、character_set_client 啥的。
  • 有些启动选项也不是系统变量,比如 defaults-file 。

状态变量

为了让我们更好的了解服务器程序的运行情况, MySQL 服务器程序中维护了好多关于程序运行状态的变量,它们被称为状态变量 。比方说 Threads_connected 表示当前有多少客户端与服务器建立了连接, Handler_update表示已经更新了多少行记录等,像这样显示服务器程序状态信息的状态变量有很多。
由于状态变量是用来显示服务器程序运行状况的,所以它们的值只能由服务器程序自己来设置,我们使用人员是不能设置的。与系统变量类似, 状态变量也有 GLOBAL 和 SESSION 两个作用范围的,所以查看 状态变量的语句可以这么写:
SHOW [GLOBAL|SESSION] STATUS [LIKE 匹配的模式];
类似的,如果我们不写明作用范围,默认的作用范围是 SESSION ,比方说这样:

mysql> show status like "thread%";
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 0     |
| Threads_connected | 1     |
| Threads_created   | 1     |
| Threads_running   | 1     |
+-------------------+-------+
4 rows in set (0.00 sec)

所有以 Thread 开头的 SESSION 作用范围的状态变量就都被显示出来了。

更多关于mysql的知识分享,请前往博客主页。编写过程中,难免出现差错,敬请指出

相关文章:

【Mysql】Mysql的启动选项和系统变量(二)

概述 在Mysql的设置项中一般都有各自的默认值,比方说mysql 5.7服务器端允许同时连入的客户端的默认数量是 151 ,表的默认存储引擎是 InnoDB ,我们可以在程序启动的时候去修改这些默认值,对于这种在程序启动时指定的设置项也称之为…...

FPGA project : flash_read

实验目标: flash的普通读指令,在指定地址开始读。可以更改地址与读的数据个数。 先发送读指令扇区地址页地址字节地址。 然后读数据。再把读到的串行数据转化为8bit的数据,存入fifo。 然后读出FIFO中数据,通过uart_tx模块发送…...

nnunetv2训练报错 ValueError: mmap length is greater than file size

目录 报错解决办法 报错 笔者在使用 nnunetv2 进行 KiTS19肾脏肿瘤分割实验的训练步骤中 使用 2d 和3d_lowres 训练都没有问题 nnUNetv2_train 40 2d 0nnUNetv2_train 40 3d_lowres 0但是使用 3d_cascade_fullres 和 3d_fullres 训练 nnUNetv2_train 40 3d_cascade_fullres …...

React知识点系列(2)-每天10个小知识

目录 1. 如何优化 React 应用的性能?你用过哪些性能分析工具?2. 在 React 中,什么是 Context API?你在什么场景下会使用它?3. 你能解释一下什么是 React Fiber 吗?4. 在项目中,你是否使用过 Rea…...

AutoGPT:让 AI 帮你完成任务事情 | 开源日报 No.54

Significant-Gravitas/AutoGPT Stars: 150.4k License: MIT AutoGPT 是开源 AI 代理生态系统的核心工具包。它采用模块化和可扩展的框架,使您能够专注于以下方面: 构建 - 为惊人之作打下基础。测试 - 将您的代理调整到完美状态。查看 - 观察进展成果呈…...

USB 转串口芯片 CH340

目录 1、概述 2、特点 3、封装 4、引脚 6、参数 6.1 绝对最大值(临界或者超过绝对最大值将可能导致芯片工作不正常甚至损坏) 6.2 电气参数(测试条件:TA25℃,VCC5V,不包括连接 USB 总线的引脚&…...

Day 05 python学习笔记

循环 应用:循环轮播图 最基础、最核心 循环:周而复始,谓之循环 (为了代码尽量不要重复) while循环 while的格式 索引定义 while 表达式(只要结果为布尔值即可): 循环体 通过条件的不断变化,从…...

Python如何17行代码画一个爱心

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…...

生产环境中常用Linux命令

太简单的我就不讲解啦,浪费时间,直接将生产中常用的 文章目录 1.总纲2.整机 top3.CPU vmstat3. 内存 free4. 硬盘: df5. 磁盘IO iostat6. 网络IO ifstat7: 内存过高的情景排查 1.总纲 整机:topcpu:vmstat内存:free硬盘:df磁盘io: iostat网络io:ifstat 2.整机 top 首先们要查…...

【使用 TensorFlow 2】03/3 创建自定义损失函数

一、说明 TensorFlow 2发布已经接近5年时间,不仅继承了Keras快速上手和易于使用的特性,同时还扩展了原有Keras所不支持的分布式训练的特性。3大设计原则:简化概念,海纳百川,构建生态.这是本系列的第三部分,…...

Vue3中使用v-model高级用法参数绑定传值

Vue3中使用v-model高级用法参数绑定传值 单个输入框传值多个输入框传值,一个组件接受多个v-model值 单个输入框传值 App.vue <template><p>{{firstName}}</p><hello-world v-model"firstName"></hello-world> </template><…...

你的工作中,chatGPT可以帮你做什么?

如何在工作中使用 ChatGPT 的 10 种实用方法 现在您已经知道如何开始使用 ChatGPT 并了解其基本功能&#xff08;提示 -> 响应&#xff09;&#xff0c;让我们探讨如何使用它来大幅提高工作效率。 1. 总结报告、会议记录等 ChatGPT可以快速分析大文本并识别关键点。例如&a…...

k8s简单部署nginx

文章目录 1. 前言2. 部署nginx2.1. **创建一个nginx的Deployment**2.2. **创建一个nginx的service** 3. 总结 1. 前言 前文提要&#xff1a; kubeadm简单搭建k8s集群第三方面板部署k8s 上篇文章我们简单部署了k8s的集群环境&#xff0c;相比一定迫不及待的想部署一个实际应用了…...

小黑子—MyBatis:第四章

MyBatis入门4.0 十 小黑子进行MyBatis参数处理10.1 单个简单类型参数10.1.1 单个参数Long类型10.1.2 单个参数Date类型 10.2 Map参数10.3 实体类参数&#xff08;POJO参数&#xff09;10.4 多参数10.5 Param注解&#xff08;命名参数&#xff09;10.6 Param注解源码分析 十一 小…...

Docker快速上手:使用Docker部署Drupal并实现公网访问

文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS&#xff0c;适用于各种不同的网站项目&#xff0c;从小型个人博客到大型企业级门户网站。它的学习…...

React知识点系列(1)-每天10个小知识

目录 1.什么是 React&#xff0c;以及它在前端开发中的优势是什么&#xff1f;2.你是如何组织和管理 React 组件的&#xff1f;3.你能解释一下 React 的生命周期方法吗&#xff1f;你通常在哪个生命周期方法中发起网络请求&#xff1f;4.什么是 React Hooks&#xff1f;你常用哪…...

substring 和 substr 的区别

1、结论 两个方法都用于截取字符串&#xff0c;其用法不同&#xff1a; 1&#xff09;相同点&#xff1a; ① 都用于截取字符串&#xff1b; ② 第一个参数都是表示提取字符的开始索引位置&#xff1b; 2&#xff09;不同点&#xff1a; ① 第一个参数的取值范围不同&…...

产品经理的工作职责是什么?

产品经理的工作职责主要包括以下几个方面&#xff1a; 1. 产品策划与定义&#xff1a;产品经理负责制定产品的整体策略和规划&#xff0c;包括产品定位、目标用户、市场需求分析等。他们需要与团队合作&#xff0c;定义产品的功能和特性&#xff0c;明确产品的核心竞争力和差异…...

智能井盖传感器:提升城市安全与便利的利器

在智能化城市建设的浪潮中&#xff0c;WITBEE万宾智能井盖传感器&#xff0c;正以其卓越的性能和创新的科技&#xff0c;吸引着越来越多的关注。本文小编将为大家详细介绍这款产品的独特优势和广阔应用前景。 在我们生活的城市中&#xff0c;井盖可能是一个最不起眼的存在。然而…...

给你一个项目,你将如何开展性能测试工作?

一、性能三连问 1、何时进行性能测试&#xff1f; 性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的&#xff0c;在功能还不够完备的情况下没有多大的意义。因为后期功能完善上会对系统的性能有影响&#xff0c;过早进入性能测试会出现测试结果不准确、浪费测试资…...

点燃市场热情,让产品风靡全球——实用推广策略大揭秘!

文章目录 一、实用推广策略的重要性1. 提高产品知名度和认可度2. 拓展产品市场和用户群体3. 增强企业品牌形象和市场竞争力 二、实用推广策略的种类1. 社交媒体推广2. 定向推广3. 口碑营销4. 内容推广 三、实用推广策略的实施步骤1. 研究目标用户和市场需求&#xff0c;明确产品…...

Python操作Hive数据仓库

Python连接Hive 1、Python如何连接Hive&#xff1f;2、Python连接Hive数据仓库 1、Python如何连接Hive&#xff1f; Python连接Hive需要使用Impala查询引擎 由于Hadoop集群节点间使用RPC通信&#xff0c;所以需要配置Thrift依赖环境 Thrift是一个轻量级、跨语言的RPC框架&…...

客户收到报价后突然安静了,怎么办?

外贸人常常会有这样的经历&#xff1a;与意向度很高的客户数封邮件沟通报价之后&#xff0c;突然客户那边就沉静下来了&#xff0c;而不知所措&#xff0c;遇到这样的客户&#xff0c;应该怎么办呢&#xff1f; Vol.1 了解客户信息 首先自身要养成一个好习惯&#xff0c;针对…...

O2OA(翱途)常见知识之 mysql 数据库备份

概述 系统运行一段时间后&#xff0c;可能发生各种情况导致数据丢失&#xff0c;如硬件故障、人为错误、软件错误、病毒攻击等。定期备份可以帮助您保护数据免受这些风险的影响&#xff0c;以便在需要时能够恢复数据。 O2OA应用本身可以通过dump配置每天自定备份数据&#xff…...

如何让你的程序支持lua脚本

最近做了一个控制机械臂的程序,使用C语言开发的,调试的时候总是需要修改代码来调整运动轨迹, 总是要编译,实在烦人 不过有个方法就是使用lua来调试运动逻辑 代码如下 static int lua_up(lua_State*l) {size_t stepluaL_checkinteger(l,1);//向上动作up(step);return 0; }st…...

什么是系统架构师?什么是系统架构?

1. 什么是系统架构师&#xff1f; 系统架构设计师(System Architecture Designer&#xff09;是项目开发活动中的关键角色之一。系统架构是系统的一种整体的高层次的结构表示&#xff0c;是系统的骨架和根基&#xff0c;其决定了系统的健壮性和生命周期的长短。 系统架构设计…...

大数据NoSQL数据库HBase集群部署

目录 1. 简介 2. 安装 1. HBase依赖Zookeeper、JDK、Hadoop&#xff08;HDFS&#xff09;&#xff0c;请确保已经完成前面 2. 【node1执行】下载HBase安装包 3. 【node1执行】&#xff0c;修改配置文件&#xff0c;修改conf/hbase-env.sh文件 4. 【node1执行】&#xf…...

百乐钢笔维修(官方售后,全流程)

文章目录 1 背景2 方法3 结果 1 背景 在给钢笔上墨的途中&#xff0c;不小心总成掉地上了&#xff0c;把笔尖摔弯了&#xff08;虽然还可以写字&#xff0c;但是非常的挂纸&#xff09;&#xff0c;笔身没有什么问题&#xff0c;就想着维修一下笔尖或者替换一下总成。 一般维…...

Redis 介绍安装

数据库 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型数据库的语言&#xff0c;用于执行对关系型…...

MyCat管理及监控

MyCat原理 在 MyCat 中&#xff0c;当执行一条 SQL 语句时&#xff0c; MyCat 需要进行 SQL 解析、分片分析、路由分析、读写分离分析等操作&#xff0c;最终经过一系列的分析决定将当前的SQL 语句到底路由到那几个 ( 或哪一个 ) 节点数据库&#xff0c;数据库将数据执行完毕后…...