目录
article
MySQL 是怎样运行的 - 01 - 初识 MySQL
MySQL 是怎样运行的 - 01 - 初识 MySQL
启动 MySQL 服务器程序
UNIX
- mysqld
- mysqld_safe
- mysql.server
mysql.server startmysql.server stop
- mysqld_multi
Windows
- mysqld
mysqld --console
- 服务
C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --installnet start mysqlnet stop mysql
连接 MySQL
mysql -h 127.0.0.1 -P 3306 -u root -p
断开连接
exitquit\q
客户端与服务器链接的方式
- TCP/IP
- 命名管道 Named pipe
- 共享内存 Shared memory
- Unix 域套接字 UNIX Domain socket
服务器处理客户端请求
flowchart TD
F@{ shape: lin-cyl, label: "MyISAM" }
G@{ shape: lin-cyl, label: "InnoDB" }
H@{ shape: lin-cyl, label: "Memory" }
I@{ shape: lin-cyl, label: "..." }
J@{ shape: processes, label: "文件系统" }
subgraph "第一部分:连接管理"
B
end
subgraph "第二部分:解析与优化"
C
D
E
end
subgraph "第三部分:存储引擎"
F
G
H
I
end
A([客户端]) --> B[处理连接]
B --> C[查询缓存]
C --> D[语法解析]
D --> E[查询优化]
E --> F
E --> G
E --> H
E --> I
F --> J
G --> J
H --> J
I --> J
查询缓存
MySQL 的缓存系统会监测涉及的每张表,如果表的结构或数据发生变化,缓存系统会自动失效。
MySQL 5.7.20 开始,不推荐使用查询缓存。MySQL 8.0 直接移除了查询缓存。
存储引擎
查询过程
- server 层
- 存储引擎层
server 层和存储引擎层交互时,一般是以记录为单位的。
缓冲区
以查询为例,查询语句会以记录为单位先将结果发送到到缓冲区,如果缓冲区满了,才会向客户端发送。
缓冲器的大小由系统变量 net_buffer_length 控制,默认大小为 16KB。
MySQL 常用的存储引擎
- InnoDB
- 事务支持
- 外键支持
- 行级锁
- MyISAM
- 不支持事务
- 不支持外键
- 表级锁
- Memory
- 所有数据都存储在内存中
- 重启后数据丢失
- 支持哈希索引
查看表的存储引擎
SHOW ENGINES;
设置表的存储引擎
CREATE TABLE t1 (
id INT PRIMARY KEY,
name VARCHAR(20)
) ENGINE = InnoDB;
修改表的存储引擎
ALTER TABLE t1 ENGINE = MyISAM;