启动选项

当 MySQL 实例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等。
在默认情况下,MySQL 实例会按照一定的顺序在指定的位置进行读取,用户只需通过命令 mysql —help|grep my.cnf 来寻找即可。
当然,也可以在启动 MySQL 时,指定配置文件:
image.png
这个时候,就会以启动时指定的配置文件为准。

参数

MySQL 数据库参数文件的作用和 Oracle 数据库的参数文件极其类似,不同的是,Oracle 实例在启动时若找不到参数文件,是不能进行装载(mount)操作的。MySQL 稍微有所不同,MySQL 实例可以不需要参数文件,这时所有的参数值取决于编译 MySQL 时指定的默认值和源代码中指定参数的默认值。
MySQL 数据库的参数文件是以文本方式进行存储的。可以直接通过一些常用的文本编辑软件进行参数的修改。
可以通过命令 show variables 查看数据库中的所有参数,也可以通过 LIKE 来过滤参数名,前面查找数据库引擎时已经展示过了。从 MySQL 5.1 版本开始,还可以通过 information_schema 架构下的 GLOBAL_VARIABLES 视图来进行查找,推荐使用命令 show variables,使用更为简单,且各版本的 MySQL 数据库都支持。

MySQL 数据库中的参数可以分为两类: **动态参数和静态**参数。同时从作用范围又可以分为全局变量和会话变量

  • 动态参数意味着可以在 MySQL 实例运行中进行更改
  • 静态参数说明在整个实例生命周期内都不得进行更改,就好像是只读(read only)的。
  • 全局变量(GLOBAL)影响服务器的整体操作。
  • 会话变量(SESSION/LOCAL)影响某个客户端连接的操作。

举个例子,用 default_storage_engine 来说明,在服务器启动时会初始化一个名为 default_storage_engine,作用范围为 GLOBAL 的系统变量。之后每当有一个客户端连接到该服务器时,服务器都会单独为该客户端分配一个名为default_storage_engine,作用范围为 SESSION 的系统变量,该作用范围为 SESSION 的系统变量值按照当前作用范围为 GLOBAL 的同名系统变量值进行初始化。

可以通过 SET 命令对**动态**的参数值进行修改
SET 的语法如下:
SET

  • SET [global l session ] system_var_name= expr
  • SET [ @@global.l @@session.] system_var_name= expr
  • 不加参数就是默认session

比如:

  • SET read_ buffer_size=524288;
  • SET @@global.read_ buffer_size=524288;