《MySQL 是怎样运行的》笔记
diguage opened this issue · 0 comments
== ch01
从 MySQL 5.7.20 开始,不推荐使用查询缓存,在 MySQL 8.0 中直接删除了查询缓存。
server 层与存储引擎层交互时,一般是以记录为单位的。
server 层在判断记录符合条件后,先将其发送到一个缓存区,待缓存区满之后,才向客户端发送真正的记录,可以通过 net_buffer_length
控制缓存区大小。
InNoDB 从 MySQL 5.5.5 开始作为 MySQL 的默认存储引擎。
-- 显示支持引擎类型
SHOW ENGINES;
-- 指定表的引擎类型
CREATE TABLE `engine_memory`
(
`i` INT DEFAULT NULL
) ENGINE = MEMORY;
-- 修改引擎类型
ALTER TABLE engine_memory
ENGINE = InnoDB;
== ch02
=== 启动选项
命令行指定时,等号两边不能有空格;配置文件中指定时,可以有空格。可以通过 mysqld --verbose --help
查看支持的启动选项。
[source]
[server]
default-storage-engine=InnoDB
配置文件分组支持:
- mysqld
- mysqld_safe
- mysql.server
- mysql
- mysqladmin
- mysqldump
- server
- client
前几个几乎都是指定到命令行程序,后两个是针对客户端程程序(mysql
,mysqladmin
, mysqldump
)。另外,由于服务端启动,都是通过调用 mysqld
来启动数据库。所以,mysqld
的配置也会被其他两种启动方式继承。
还可以通过在分组后面加版本号的方式来给指定版本添加配置项:
[source]
[server-5.7]
default-storage-engine=InnoDB
=== 系统变量
[source,sql]
SHOW VARIABLES [LIKE <匹配模式>];
SHOW VARIABLES LIKE 'default%';
-- 设置系统变量
SET [GLOBAL|SESSION] 系统变量名 = 值;
或
SET [@@(GLOBAL|SESSION)] 系统变量名 = 值;
-- 不加 GLOBAL,默认作用范围就是 SESSION。
-- 查看指定范围的系统变量;不传 GLOBAL,则默认是 SESSION。
SHOW [GLOBAL|SESSION] VARIABLES [LIKE <匹配模式>];
在配置文件中,系统变量的单词之间必须用 _
连接起来。大部分系统变量也是启动选项。
=== 状态变量
状态变量是用来显示服务器程序运行状态的。
[source,sql]
-- 查看状态变量;不传 GLOBAL,则默认是 SESSION。
SHOW [GLOBAL|SESSION] STATUS [LIKE <匹配模式>];
== ch03 字符集
[source,sql]
-- 查看支持的字符集
SHOW (CHARACTER SET|CHARSET) [LIKE <匹配模式>];
utf8mb4
从 MySQL 8.0 开始作为其默认字符集。
[source,sql]
-- 查看支持的排序规则
SHOW COLLATION [LIKE <匹配模式>];
. 字符集名称
. 应用语言
. 是否区分重音、大小写等