书名《MySQL是怎样运行的:从根儿上理解MySQL》可自行百度
以下是知识点总结
MySQL是一个C/S架构的软件。
在Windows安装后首先注册成服务,然后会在开机后自启动。
启动MySQL服务端。
直接在bin目录下执行mysqld 或者在配置文件my.ini中设置一些默认的启动参数。
启动MySQL客户端。
在bin目录下,使用命令 mysql -uroot -p1111 即使用TCP/IP连上本地的Mysql,如果需要指定IP和端口的话 mysql -hlocalhost -P3306 -uroot -p11111
服务器处理客户端请求
常用的存储引擎
启动选项的两种方式
一种是服务端的启动,即mysqld 的方式启动。
我们可以直接在命令行后面使用 --参数=参数1。具体参数可以使用mysqld --help
还有就是配置文件的方式,配置文件中存放了各种命令的启动参数,在启动时就会进行启动参数的初始化。
举例mysqld,mysqld配置文件中会加载[mysqld]组和[server]组的启动参数。当出现重复的启动参数时,就会后续加载的参数就会直接覆盖前面的参数。加载顺序是[mysqld] -> [server] -> 命令行。
其中呢启动项大部分是设置一些系统变量的。系统变量就是调控mysql运行的重要参数。比如设置存储引擎,设置最大接收的线程数。
同时呢系统变量也分两类GLOBAL和SESSION。
GLOBAL的系统变量就是MySQL服务器的系统变量,当有一个新的客户端连接到服务器时,就会为客户端创建一个SESSION,并用GLOBAL初始化SESSION系统变量。客户端可以根据自身需求来更新系统变量,如果希望更改全局的系统变量就变更GLOBAL。
set @@GLOBAL.default-storage-engine=InnoDB # 这样更新全局后续连接都会根据此更新,已经有的连接不会变更。同时变更当前会话的就改成SESSION简而言之就是MySQL记录当前服务端的状态的变量,这些状态变量只能由MySQL来设置,客户端可以对其进行查看来监控MySQL。
我们举例客户端向服务端发送一段SQL。
一段字符串要在进程中通信,就需要对其进行按照一定规则编码成0101,然后传送到服务器端,服务器端需要在根据其编码规则在进行解码,将其还原成字符串。
MySQL中支持很多的字符集,可以使用 show charset; 命令进行查看。
MySQL8.0.22中支持41种字符集。下面列举一部分,最常见和最熟知的就是utf8了,但是在MySQL中utf8是对创始人对其进行的删减,真正的是utf8mb4需要注意。
utf32 UTF-32 Unicode utf32_general_ci 4
utf8 UTF-8 Unicode utf8_general_ci 3
utf8mb4 UTF-8 Unicode utf8mb4_0900_ai_ci 4
每一种字符集对应着多种比较规则,但是每一种比较规则只对应着一种字符集。
字符集分为多个级别。

客户端发送信息到服务端的流程
在实际的连接中通常就是上面提到的系统变量都是和操作系统的字符集是一样的。
比较规则就是进行比较的规则,当出现排序预期和我们想象的不一样,可能就是出现了比较规则的错误,可能需要更换比较规则。