10bet网址
MySQL 5.7参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 36.3 mb
PDF (A4)- 36.3 mb
手册页(TGZ)- 235.6 kb
手册页(邮政编码)- 347.2 kb
信息(Gzip)- 3.3 mb
信息(邮政编码)- 3.3 mb
本手册节选

5.1.8使用系统变量

MySQL服务器维护许多配置其操作的系统变量。第5.1.7节,“服务器系统变量”,描述了这些变量的含义。每个系统变量都有一个默认值。可以在服务器启动时使用命令行或选项文件中的选项设置系统变量。的方法可以在服务器运行时动态更改它们中的大多数语句,该语句使您能够修改服务器的操作,而不必停止和重新启动服务器。您还可以在表达式中使用系统变量值。

许多系统变量是内建的。由服务器插件实现的系统变量在安装插件时公开,其名称以插件名称开头。例如,audit_logPlugin实现了一个名为audit_log_policy

存在系统变量的范围有两个。全局变量会影响服务器的整体操作。会话变量影响其对个别客户端连接的操作。给定的系统变量可以同时具有全局值和会话值。全局系统变量和会话系统变量的关系如下:

  • 当服务器启动时,它将每个全局变量初始化为默认值。可以通过在命令行或选项文件中指定的选项更改这些默认值。(见第4.2.2节“指定程序选项”.)

  • 服务器还为每个连接的客户机维护一组会话变量。客户端的会话变量在连接时使用相应全局变量的当前值进行初始化。例如,客户机的SQL模式由会话控制sql_mode值,该值在客户机连接到全局变量的值时初始化sql_mode价值。

    对于某些系统变量,会话值不是由相应的全局值初始化的;如果是,将在变量描述中指明。

通过在命令行或选项文件中使用选项,可以在服务器启动时全局设置系统变量值。在启动时,系统变量的语法与命令选项相同,因此在变量名中,破折号和下划线可以互换使用。例如,——general_log =而且——general-log =是等价的。

当使用启动选项设置接受数值的变量时,该值可以用后缀的K,或G(大写或小写)表示1024的乘数2或10243.;即,单位分别为千字节、兆字节或千兆字节。因此,下面的命令使用InnoDB日志文件大小为16mb,最大包大小为1g:

mysqld——innodb-log-file-size = 16 m max-allowed-packet = 1 g

在一个选项文件中,这些变量是这样设置的:

(mysqld) innodb_log_file_size = 16 m max_allowed_packet = 1 g

后缀字母的字母大小写并不重要;16米而且16米是等价的,是吗1克而且1克

控件来限制运行时可以设置系统变量的最大值语句,通过使用该形式的选项指定该最大值——最大var_name价值在服务器启动。例如,防止的值innodb_log_file_size从运行时增加到超过32MB,使用该选项——maximum-innodb-log-file-size = 32米

方法可以在运行时更改许多系统变量声明。有关列表,请参见第5.1.8.2节“动态系统变量”.用。改变一个系统变量,通过名称引用它,前面可选地加上修饰符。在运行时,系统变量名必须使用下划线,而不是破折号。下面的例子简要说明了这种语法:

  • 设置一个全局系统变量:

    SET GLOBAL max_connections = 1000;设置@@GLOBAL。max_connections = 1000;
  • 设置一个会话系统变量:

    SET SESSION sql_mode = ' tradition ';设置@@SESSION。sql_mode='TRADITIONAL'; SET @@sql_mode = 'TRADITIONAL';

有关有关语法,看第13.7.4.1节“变量赋值的SET语法”.有关设置系统变量的特权要求的描述,请参见第5.1.8.1节“系统变量特权”

在服务器启动时设置变量时,可以使用用于指定值乘数的后缀,但不能使用在运行时。另一方面,与可以使用表达式指定变量的值,但在服务器启动时设置变量时不能这样做。例如,下面的第一行在服务器启动时是合法的,但第二行是不合法的:

shell> mysql——max_allowed_packet=16*1024*1024

相反,下面的第二行在运行时是合法的,但第一行是不合法的:

SET GLOBAL max_allowed_packet=16M;SET GLOBAL max_allowed_packet=16*1024*1024;

要显示系统变量名和值,请使用显示变量声明:

mysql >显示变量;+---------------------------------+-----------------------------------+ | Variable_name |值  | +---------------------------------+-----------------------------------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | automatic_sp_privileges上| | | back_log 50 | | | basedir | /home/mysql/ | | binlog_cache_size | 32768 | | bulk_insert_buffer_size | 8388608 | | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 |中的一个|Character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /home/mysql/share/mysql/charsets/ | | collation_connection | utf8_general_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci |…| innodb_autoextend_increment | 8 | | innodb_buffer_pool_size | 8388608 | | innodb_checksums | ON | | innodb_commit_concurrency | 0 | | innodb_concurrency_tickets | 500 | | innodb_data_file_path | ibdata1:10M:autoextend | | innodb_data_home_dir | |…| |版本5.7.18-log | | version_comment源分布| | | version_compile_machine | i686 | | version_compile_os | suse linux | | wait_timeout | 28800年  | +---------------------------------+-----------------------------------+

与一个就像子句中,语句只显示匹配模式的变量。要获取特定的变量名,请使用就像条款如下所示:

显示变量'max_join_size';显示会话变量max_join_size;

方法获取名称与模式匹配的变量列表中的通配符就像条款:

显示变量'%size%';显示全局变量'%size%';

通配符可以用于要匹配的模式中的任何位置。严格地说,因为_是一个通配符匹配任何单个字符,您应该转义为\ _从字面上来说。实际上,这很少是必要的。

显示变量,如果两者都不指定全球也不会话, MySQL的回报会话值。

要求的原因全球关键字时设置全球-only变量,但在检索它们时不这样做是为了防止未来出现问题:

  • 是一个会话类名称相同的要删除的变量全球变量时,具有足够权限修改全局变量的客户机可能会意外更改全球变量而不是会话变量。

  • 是一个会话要添加的与类同名的变量全球变量,该客户机打算更改全球变量可能只找到它自己的会话变量的变化。