MySQL 变量
MySQL中的变量主要分为两大类,用户变量和系统变量。
1、用户变量
用户变量是用户自定义的变量,用户变量以@符号开头,通过set或者select可以给用户变量赋值。
用户变量是属于会话级别的变量,变量的值只在当前会话中有效,当会话结束时,这些变量的值就会丢失。
例如:
SET @myVariable = 100; 或 SELECT @myVariable := 100;
2、系统变量
系统变量主要就是用来定义MySQL服务器的操作和配置,系统变量可以使用 SHOW VARIABLES
语句查看,可以用SET语句修改(某些变量是只读的,无法修改)。
其实系统变量还可以细分为全局变量和会话变量。
-
全局变量影响服务器的整体操作,代表了服务器的当前状态。例如,innodb_buffer_pool_size变量决定了InnoDB存储引擎用于缓冲池的内存大小。
-
会话变量仅影响当前连接的会话。例如,sort_buffer_size变量决定了为排序操作分配的内存量。
MySQL 服务选项
1、mysqld配置选项
前面我们也说过,MySQL服务端的服务进程是mysqld,mysqld有很多配置选项,如果在启动mysql的进程的时候手动指定,这样管理器来很不方便。
例如:
mysqld --port=3306 --pid-file=/var/run/mysqld/mysqld.pid --datadir=/var/lib/mysql
所以可以将这些配置按照一定的格式(忽略选项的 -- 前缀,直接写选项名称),放在一个配置文件里面进行统一管理,方便对这些参数进行统一管理和简化启动命令。
例如:
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
bind-address = 0.0.0.0
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
log_error = /var/log/mysql/error.log
# 默认字符集为utf8mb4,这是一个支持Unicode的字符集,能够存储任何Unicode字符。
character_set_server=utf8mb4
collation-server = utf8mb4_unicode_ci
2、全局变量和mysqld配置选项
MySQL中的许多系统变量对应于mysqld的配置选项。它们共同影响MySQL服务器的行为和性能。
当MySQL服务器启动时,它会读取配置文件中的配置,这些配置选项的值会作为MySQL服务中某些系统变量的初始值。大多数情况下,配置文件中的选项名称和全局系统变量的名称相同。
也不是每个mysqld的配置选项都有与之对应的系统变量,这个可以查看MySQL的官方文档来确认;
官方文档:https://dev.mysql.com/doc/refman/5.7/en/server-option-variable-reference.html
文档说明:
-
Cmd-Line (Command-Line): 这些是可以在命令行上启动mysqld服务时使用的选项。
-
Option File: 这些选项可以在配置文件(如my.cnf或my.ini)中设置。
-
System Var (System Variable): 这些是MySQL服务器的系统变量,可以控制其行为和特性。
-
Status Var (Status Variable): 这些变量提供了有关MySQL服务器状态的信息。
-
Var Scope (Variable Scope): 这指的是变量的作用域。它可以是全局的(影响整个服务器)或会话的(仅影响当前连接的会话)。
-
Dynamic: 这指的是变量是否可以在运行时动态更改,而不需要重启服务器。
例如:
配置文件中通过 character_set_server 指定服务端的默认字符集,这个时候mysql中的character_set_server变量的初始值就是配置文件中指定的值。
修改Mysql配置文件的某个配置选项,需要重启mysqld进程才会生效,这个时候可以直接通过修改对应的全局变量来动态调整配置。
3、设置系统变量的方法
用户变量以 @符号 开头进行标识,系统变量用 两个@符号 进行标识。
SET @@VAR = VALUE
这种方式默认设置的是SESSION(会话)级别的系统变量,如果session级别的系统变量不存在就会报错。所以如果想设置GLOBAL(全局)级别的系统变量,可以添加GLOABL关键字设置。
SET GLOBAL @@VAR = VALUE
说明:
手动修改MySQL的系统变量值时,这些更改仅在当前MySQL服务的运行期间有效。
因为一旦MySQL服务重启,它会重新读取配置文件,会将所有系统变量重置为配置文件中指定的值,或者如果未在配置中明确指定,则重置为默认值。
标签:选项,变量,配置文件,mysqld,MySQL,服务器 From: https://www.cnblogs.com/heyongshen/p/17875532.html