MySQL执行流程和字符集、排序规则等知识点

211 阅读2分钟

笔记大纲

  • MySQL的请求流程
  • 常见的存储引擎
  • 字符集和比较规则

1.MySQL的请求执行流程

image.png

2.常见的存储引擎

存储引擎特点
Archive数据存档、记录插入后无法修改
BlackHole黑洞,丢弃写操作,读操作返回空内容
CSV数据的存储形式以逗号分隔数据项
Federated用来访问远程表
InnoDB(最主要)使用最为广泛、默认的引擎,支持事务、行锁等
Memory数据存储在内存中
Merge多用于管理多个MyISAM引擎表的表集合
MyISAM早期的、非实物处理的存储引擎
NDBMySQL集群专用的存储引擎

3.字符集和比较(排序)规则

3.1 ASSCII字符集

一共收录了128个字符包括空格、标点符号、数字、大小写字母等。

3.2 Unicode字符集

为全世界所有的字符分配了唯一的数字编码,每当有新的字符,Unicode字符集就不断增加。

4.MySQL中支持的字符集/编码方式和比较规则

4.1 utf8和utf8b4

MySQL中没有明确区分字符集和编码的区别,UTF-8编码方式在表示一个字符的时候使用1-4个字节,但是大部分的字符用1-3个就够了。

        - `utf8mb3`:MySQL中的uft8就是uft8mb3,它是UTF-8编码的阉割版本,使用1~3个字节表示一个字符。
        - `utf8mb4`:原滋原味的UTF-8编码,使用1~4个字节表示一个字符。在MySQL8.0后,默认的编码方式就是utf8mb4。

4.2 比较规则/排序规则

一种字符集可以包含多种比较规则,例如utf8就支持多达二十多种比较规则,最常见的是 utf8_general_ci。 比较规则的命名可以看出比较规则的分类:

        - utf8_后面跟着的应用的语言,例如utf8_spanish_ci表示西班牙语的比较规则。
        - 后缀是_ci的,表示不区分大小写。
        - 后缀是_cs的,表示区分大小写。
        - 后缀是_bin的,表示以二进制进行比较。

字符集和比较规则可以在4个级别规定:服务器级别、数据库级别、表级别、列级别。