• 【mysql是怎样运行的】- 启动项、系统变量、状态变量(mysql客户端连接就是一个会话连接)


    1.启动选顶和配置文件

    • 服务器相关的程序(比如 mysqldmysqld_safe) 还是客户端相关的程序(比如mysqlmysqladmin) 。在启动时基本都可以指定启动选项。
    • 如果同一个启动选项既出现在命令行中,又出现在配置文件
      中 , 那么以命令行中的启动选项为准

    1.1 在命令行上使用选项

    命令行只有当次启动服务器或客户端程序有用,不是永久性的

    #二者等价,在命令行中指定启动选项时需要在选项名前加上-前缀.
    另外 , 如果选项名是由多个单词构成的,它们之间可以由短划线-连接,
    也可以使用 下划线_连接 ,
    mysqld --skip-networking #禁止TCP/IP通信
    mysqld --skip_networking
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 将各个启动选项写到一行中,每一个启动选项名称前边添加- -,各个启动选项之间使用空白字符隔开
      --启动选项1[=值1] --启动选项2[=值2] --启动选项n[=值n]
      注意,选项名、=、选项值之间不可以有空白字符

    1.2 配置文件使用选项

    在命令行中设置的启动选项只有当次启动生效 ,
    置文件可以长久地保存在计算机的硬盘中
    , 所以我们只需配置一次,以后就不用显式地把启动选项都写在启动命令行中。

    • my.ini 或my.cnf配置文件如下
    [client]
    
    port=3306
    
    [mysql]
    
    default-character-set=latin1
    
    
    # SERVER SECTION
    # ----------------------------------------------------------------------
    #
    # The following options will be read by the MySQL Server. Make sure that
    # you have installed the server correctly (see above) so it reads this 
    # file.
    #
    [mysqld]
    
    # The TCP/IP Port the MySQL Server will listen on
    port=3306
    
    
    #Path to installation directory. All paths are usually resolved relative to this.
    basedir="C:/Program Files/MySQL/MySQL Server 5.5/"
    
    #Path to the database root
    datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
    ......
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    上面这个配置文件里就定义了许多个组,组名分别是server、 mysqld、 mysqld_safe、 client、mysql 、 mysqladmin。每个组下边可以定义若干个启动选项。
    定义[mysqld-5.7] 的选项组.它的含义和 [mysqld] 一样,只不过只有版本号为 5.7的 mysqld 程序才能使用这个选项组中的选项。
    优先级:(1)如果我们在多个配置文件中设置了相同的启动项,则以最后一个配置文件的为准。如先1.cnf,后2.cnf,都配置了

    #1.cnf
    [server]
    default-storage-engine=InnoDB
    
    #2.cnf
    [server]
    default-storage-engine=MyISAM
    
    最后引擎是MyISAM,以最后配置为准
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    (2)同一个配置文件中多个组的优先级,将以最后一个出现的组中的启动选项为准

    [server]
    default-storage-engine=InnoDB
    [mysqld]
    default-storage-engine=MyISAM
    最后引擎是MyISAM,以最后配置为准
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2. 系统变量

    1.查看系统变量

    #查看系统变量
    SHOW VARIABLES;
    #模糊查询 查看系统变量
    SHOW VARIABLES LIKE '%max';
    
    • 1
    • 2
    • 3
    • 4

    2.设置系统变量
    (1)通过启动选顶设置, 大部分系统变量都可以通过在启动服务器时传送启动选项的方式来设置.

    #命令行启动
    mysqld --default-storage-engine=MyISAM --max-connections=10
    
    #配置文件启动
    [server]
    default-storage-engine=MyISAM
    max-connections=10
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    (2) 服务器程序运行过程中设置
    大部分系统变量来说,它们的值可以在服务器程序运行过程中进行动态修改而无须停止并
    重启服务器

    • GLOBAL (全局范围) : 影响服务器的整体操作,具有 GLOBAL 作用范围的系统变量可以称为全局变量.
    • SESSION (会话范围) : 影响某个客户端连接(会话连接)的操作,具有 SESSION 作用范围的系统变量可以称为会话变量.
    • 服务器在启动时,会将每个全局变量初始化为其默认值 (可以通过命令行或配置文件中指定的选项更改这些默认值)。 服务器还为每个连接的客户端维护一组会话变量,客户端的会话变量在连接时使用相应全局变量的当前值进行初始化

    服务器运行中设置系统变量

    SET (GLOBAL|SESSION) 系统变量名 = 值
    或者
    SET [@@(GLOBAL|SESSION).]系统变量名 = 值
    
    #新连接到服务器的客户端都用 MyISAM 作为默认的存储引擎,则可以选择下面两条语句中的任意一条来设置.
    语句 1: SET GLOBAL default_storage_engine = MyISAM;
    语句 2: SET @@GLOBAL.default_storage_engine = MyISAM;
    
    #如果只想对本客户端生效,也可以选择下面 3 条语句中的任意一条来设置.
    语句 1: SET SESSION defau1t_storage_engine = MyISAM;
    语句 2: SET @@SESSION.default_storage_engine = MyISAM;
    语句 3 : SET default_storage_engine = MyISAM;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    查看不同作用范围的系统变量

    SHOW (GLOBAL|SESSION] VARIABLES [like 匹配的模式];
    #查看全局
    SHOW GLOBAL VARIABLES LIKE 'default_storage_engine';
    
    • 1
    • 2
    • 3
    • 如果使用GLOBAL修饰符,则显示全局系统变量的值。如果某个系统变量没有GLOBAL作用范围,则不显示它.
    • 如果使用 SESSION 修饰符,则显示针对当前连接有效的系统变量值。如果某个系统变量没有 SESSION 作用范围,则显示 GLOBAL 作用范围的值。
    • 如果没写修饰符,则与使用 SESSION 修饰符效果一样。

    举个例子:
    会话1设置session级别系统变量,会话1可以show到
    在这里插入图片描述
    其他会话仍然是以GLOBAL的全局变量为准,说明session的设置仅针对当前客户端连接,即当前会话连接
    在这里插入图片描述

    3. 状态变量

    状态变量是用来显示服务器程序运行状态的,所以它们的值只能由服务器程序自己来
    设置,不能人为设置。
    与系统变量类似,状态变量也有 GLOBAL 和 SESSION 两个作用范围。

    查看不同作用范围的状态变量

    SHOW (GLOBAL|SESSION) STATUS (LIKE 匹配的模式);
    
    SHOW STATUS LIKE 'thread%';
    
    • 1
    • 2
    • 3
  • 相关阅读:
    vlcplayer for android 源码编译log打印
    实战分析:项目业务模块划分与包名设计思想
    备战蓝桥杯---图论基础理论
    macos13 arm芯片(m2) 搭建hbase docker容器 并用flink通过自定义richSinkFunction写入数据到hbase
    VirtIO
    Flink1.14 SourceReader概念入门讲解与源码解析 (三)
    【PNR#2 Div1 D】找零(DP)(贪心)
    【目标检测】基于yolov5海上船舶目标检测(附代码和数据集)
    重定向、文件偏移量、阻塞和非阻塞 思维导图
    现代PCB生产工艺——加成法、减成法与半加成法
  • 原文地址:https://blog.csdn.net/JH39456194/article/details/128066968