Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

《MySQL 是怎样运行的》笔记 #5

Open
diguage opened this issue Feb 16, 2022 · 0 comments
Open

《MySQL 是怎样运行的》笔记 #5

diguage opened this issue Feb 16, 2022 · 0 comments

Comments

@diguage
Copy link
Owner

diguage commented Feb 16, 2022

== ch01

image

从 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

前几个几乎都是指定到命令行程序,后两个是针对客户端程程序(mysqlmysqladmin, 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 <匹配模式>];

. 字符集名称
. 应用语言
. 是否区分重音、大小写等

@diguage diguage changed the title 《MySQL 是怎样运行的》笔记-ch01 《MySQL 是怎样运行的》笔记 Feb 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant