MySQL 是怎样运行的
字符集和比较规则 我们上边说 utf8 字符集表示一个字符需要使用14个字节,但是我们常用的一些字符使用13个字节就可以表 示了。而在 MySQL 中字符集表示一个字符所用最大字节长度在某些方面会影响系统的存储和性能,所以设计 MySQL 的大叔偷偷的定义了两个概念: utf8mb3 :阉割过的 utf8 字符集,只使用13个字节表示字符。 utf8mb4 :正宗的 utf8 字符集,使用14个字节表示字符。 有一点需要大家十分的注意,在 MySQL 中 utf8 是 utf8mb3 的别名,所以之后在 MySQL 中提到 utf8 就意味着使 用1~3个字节来表示一个字符,如果大家有使用4字节编码一个字符的情况,比如存储一些emoji表情啥的,那请 使用 utf8mb4 。 SHOW COLLATION LIKE ‘utf8_%’; 字符比较规则 MySQL 有4个级别的字符集和比较规则,分别是: 服务器级别 数据库级别 表级别 列级别 1 2 CREATE TABLE 表名 (列的信息) [[DEFAULT] CHARACTER SET 字符集名称] [COLLATE 比较规则名称] 1 2 3 CREATE TABLE 表名( 列名 字符串类型 [CHARACTER SET 字符集名称] [COLLATE 比较规则名称], 其他列... ); InnoDB 而我们知道读写磁盘的速度非常慢,和内存读写差了几个数量级,所以当我 们想从表中获取某些记录时, InnoDB 存储引擎需要一条一条的把记录从磁盘上读出来么?不,那样会慢死, InnoDB 采取的方式是:将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,InnoDB中页的大小 一般为 16 KB。也就是在一般情况下,一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB 内容刷新到磁盘中。 ...