《Mysql是怎样运行的》第二章读书笔记

2022/2/14 2:15:09

本文主要是介绍《Mysql是怎样运行的》第二章读书笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

  • 启动选项和配置文件
    • 在程序启动时指定的设置项称之为启动选项(startup option),这些选项控制着程序启动后的行为。
    • 在命令行上使用启动选项
      • 如果我们想在启动服务器程序时就禁止各客户端使用TCP/IP网络进行通信,可以在启动服务器程序的命令行中添加skip-networking启动选项:
        • mysqld --skip-networking
        • 在命令行中指定启动逃项时需要在逃项名前加上-前缀.另外,如果选项名是由多个单词构成的,它们之间可以由短划线-连接,也可以使用下划线_连接,也就是说skip-networkingskip_networking表示的含义是相同的.
      • 果我们想改变表的默认存储引擎,可以在黑框框中输入下面这样的启动服务器的命令:
        • mysqld --default-storage-engine=MyISAM
      • 在启动服务器程序的命令行后边指定启动选项的通用格式就是这样的:
        • --启动选项1[=值1] --启动选项2[=值2] ... --启动选项n[=值n]
          • 在命令行中指定有值的启动选项时需要注意,选项名、=、选项值之间不可以有空白字符
      • 每个MySQL程序都支持许多不同的选项.大多数程序提供了一个–help选项,可以用来查看该程序支持的全部启动选项以及它们的默认值.例如,使用mysql--help可以看到mysql程序支持的启动选项;使用mysqld_ safe --help可以看到mysqld_safe程序支持的启动选项.不过查看mysqld支持的启动选项有些特别,需要使用mysqld --verbose --help
      • 选项的长形式和短形式
        • 我们前面提到的skip-networkingdefault-storage-engine这些启动选项都是长形式的选项(因为它们很长),MySQL为了方便我们使用,对于一些常用的选项提供了短形式。此处列举一些具有短形式的启动选项:
          在这里插入图片描述

        • 短形式的选项名只有一个字母,与使用长形式选项时需要在选项名前加两个短划线 – 不同的是,使用短形式选项时在选项名前只加一个短划线 - 前缀。

        • 使用短形式选项时,选项名和选项值之间可以没有间隙,也可以用空白字符隔开(-p选项有些特殊,-p和密码值之间不能有空白字符).

        • 选项名是区分大小写的

    • 配置文件中使用选项
      • 在命令行中设置的启动选项只对当次启动生效,也就是说如果下一次重启程序的时候我们还想保留这些启动选项,还得重复把这些选项写到启动命令行中。但是我们可以把需要设置的启动选项都写到配置文件中,每次启动服务器时都从这个文件中加载相应的启动选项.由于这个配置文件可以长久地保存在计算机的硬盘中,所以我们只需配置一次,以后就不用显式地把启动项都写在启动命令行中了.所以推荐使用配置文件的方式来设置启动选项.
      • 配置文件的路径
        • MySQL程序在启动时会在多个路径下寻找配置文件,这些路径有的是固定的,有的可以在命令行中指定.

        • Windows
          在这里插入图片描述

          • 在给定的前3个路径中,配置文件可以使用.ini的扩展名,也可以使用.cnf的扩展名.
          • %WINDIR%指的是你的机器上Windows目录的位置,通常是C:\WINDOWS.如果不确定,可以使用echo %WINDIR%命令来查看.
          • BASEDIR指的是MySQL安装目录的路径,在我的Windows机器上.BASEDIR的值是C:\Program Files\MySQL\MySQL Server 5.7.
          • 第四个路径指的是在启动程序时可以通过指定defaults-extra-file启动选项的值来添加额外的配置文件路径.
          • %APPDATA%表示Windows应用程序数据目录的值,可以使用echo %APPDATA%命令查看.
          • 最后一个名为mylogin.cnf的配置文件有点儿特殊,它不是一个纯文本文件(其他的配置文件都是纯文本文件).而是使用mysql_config_editor实用程序创建的加密文件.这个文件只能包含一些在启动客户端程序时用于连接服务器的选项,包括host、user、password、port和socket.而且它只能被客户端程序所使用•
        • 类UNIX操作
          在这里插入图片描述

          • SYSCONFDIR表示在使用CMake构建MySQL时使用SYSCONFDIR选项指定的目录.
          • MYSQL_HOME是一个环境变量,该变量的值是我们自己设置的。该变量的值代表一个路径,我们可以在该路径下创建一个my.cnf配置文件,这个配置文件中只能放置与启动服务器程序相关的选项(.mylogin.cnf只能存放客户端相关的一些选项,除.mylogin.cnf以及$MySQL_ HOME/my.cnf配置文件外,其余配置文件既可以存放服务器相关的选项,也可以存放客户端相关的选项)。如果使用mysqld_safe启动服务器程序,而且我们也没有主动设置这个MySQL_HOME环境变量的值,那么这个环境交量的值将自动被设置为MySQL的安装目录,也就是MySQL服务器将会在安装目录下查找名为my.cnf的配置文件.
          • 最后两个以开头的路径是用户相关的.类UNIX系统中都有一个当前登录用户的概念,每个用户都可以有一个用户目录,就代表这个用户目录.大家可以查看HOME环境变量的值来确定当前用户的用户目录.比如,我的macOS机器上的用户目录就是/Users/quintin.之所以说最后两个配置文件是用户相关的,是因为不同的类UNIX系统的用户都可以在自己的用户目录下创建.my.cnf或者.mylogin.cnf。换句话说,不同登录用户使用的.my.cnf或者.mylogin.cnf配置文件是不同的.
          • defaults-extra-file和.mylogin.cnf的含义与Windows中的一样
          • 总之,在我的计算机中,这几个路径中的任意一个都可以当作配置文件来使用.如果它们不存在,可以手动创建一个.比如,在~/.my.cnf路径下手动创建一个配置文件.
      • 配置文件的内容
        • 与在命令行中指定启动逃项不同的是,配置文件中的启动选项被划分为若干个组,每个组有一个组名,用中括号。扩起来,像下面这样:
          - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C3XHeWwz-1644763734612)(../assets/image_1644760636754_0.png)]

        • 上面这个配置文件里就定义了许多个组,组名分别是server、mysqld、mysqld_safe、client、mysql、mysqladmin。每个组下边可以定义若干个启动选项.
          - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4NRmQDpi-1644763734613)(../assets/image_1644760745528_0.png)]

        • 在配置文件中指定启动选项的语法类似于命令行语法,但是在配置文件中只能使用长形式的选项,而且在配置文件中指定的启动选项不允许加–前缀,并且每行只指定一个选项,等号=周围可以有空白字符〈在命令行中,选项名、=、选项值之间不允许有空白字符).另外,在配置文件中,我们可以使用#来添加注释,从#出现直到行尾的内容都属于注释内容,MySQL程序会忽略这些注释内容.

        • 在配置文件中,不同的选项组是给不同的程序使用的.如果选项组名称与程序名称相同,则组中的选项将专门应用于该程序.例如,[mysqld]和[mysql]组分别应用于mysqld服务器程序和mysql客户端程序.不过有两个选项组比较特别:

          • [server]组下面的启动选项将作用于所有的服务器程序:
          • [client]组下面的启动选项将作用于所有的客户端程序.
        • mysqld_safe和mysql.server这两个程序在启动时都会读取[mysqld]选项组中的内容.
          - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MCSFHBKk-1644763734613)(../assets/image_1644761011877_0.png)]

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

        • MySQL将在某些固定的路径下搜索配置文件.我们也可以通过在命令行中指定defaults-extra-file启动选项来指定额外的配置文件路径。如果该文件不存在,则忽略。如果我们在多个配置文件中设置了相同的启动选项,则以最后一个配置文件中为准

        • 同一个程序可以访问配置文件中的多个组,如果在同一个配置文件中的多个组里出现同样的启动选项,那么将以最后一个出现的组中启动选项为准。

        • 如果我们不想让MySQL到默认的路径下搜索配置文件,则可以在命令行指定defaults-fiIe选项,比如下面这样(以类UNIX系统为例):

          • mysqld --default-file=/tmp/myconfig.txt
          • 在程序启动时将只在/tmp/myconfig.txt路径下搜索配置文件.如果文件不存在或无法访问,则会发生错误.
  • 系统变量
    • MySQL服务器程序在运行过程中会用到许多影响程序行为的变量,它们被称为系统变量。比如,允许同时连入的客户端数量用系统变量max_ connections表示;表的默认存储引擎用系统变量default_storage_ engine表示,查询缓存的大小用系统变量query_ cache _ size表示­。每个系统变量都有一个默认值,我们可以使用命令行或者配置文件中的选项在启动服务器时改变一些系统变量的值。大多数系统变量的值也可以在程序运行过程中修改,而无须停止并重新启动服务器.
    • 查看系统变量
      • 我们可以使用下列命令查看MySQL服务器程序支持的系统变量以及它们的当前值:
        • SHOW VARIABLES [LIKE 匹配的模式]
    • 设置系统变量
      • 通过命令行添加启动选项
      • 通过配置文件添加启动选项
    • 对于启动选项来说,如果启动选项名由多个单词组成,各个单词之间用短划线-或者下划线_连接起来都可以.但是对于对应的系统变量来说,各个单词之间必须使用下划线_连接起来.
    • 系统变量作用范围
      • GLOBAL (全局范围):影响服务器的整体操作.具有GLOBAL作用范围的系统变量可以称为全面变量.
      • SESSION (会话范围):影响某个客户端连接的操作.具有SESSION作用范围的系统变量可以称为会话变量.
      • 服务器在启动时,会将每个全局变量初始化为其默认值(可以通过命令行或配置文件中指定的选项更改这些默认值)服务器还为每个连接的客户端维护一组会话变量,客户端的会话变量在连接时使用相应全局变量的当前值进行初始化(也有一些会话变量不依据相应的全局变量值进行初始化)
      • 并不是所有的系统变量都具有GLOBAL和SESSION的作用范围.
      • 有些系统变量是只读的,并不能设置值.
  • 启动选项和系统变量的区别
    • 启动选项是在程序启动时由用户传递的一些参数,而系统变量是影响服务器程序运行行为的变量.它们之间的关系如下:
      • 大部分的系统变量都可以当作启动选项传入。
      • 有些系统变量是在程序运行过程中自动生成的,不可以当作启动选项来设置,比如character_set_client.
      • 有些启动选项也不是系统变量,比如defaults-file。
  • 状态变量
    • 为了让我们更好地了解服务器程序的运行情况,MySQL服务器程序中维护了好多关于程序运行状态的变量,它们被称为状态变量.比如,Threads_ connected表示当前有多少客户端与服务器建立了连接;Innodb_rows_updated表示更新了多少条以InnoDB为存储引擎的表中的记录.


这篇关于《Mysql是怎样运行的》第二章读书笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程