![d0b4e0aae5258d6f3fd1bfa09ad1073f.png](https://i-blog.csdnimg.cn/blog_migrate/ecb2e8906e46b5c67a8e2cad67a5acd9.jpeg)
客户端与服务器连接 TCP/IP 命名管道和共享内存 Unix域套接字文件
处理请求包括:连接管理,解析与优化,存储引擎
SHOW ENGINES;
CREATE TABLE 表名(
建表语句;
) ENGINE = 存储引擎名称;
ALTER TABLE 表名 ENGINE = 存储引擎名称;
启动选项
配置文件路径 配置文件 defaults-file defaults-extra-file
使用`defaults-extra-file`可以指定额外的配置文件搜索路径,那些固定的配置文件路径也会被搜索
系统变量
SHOW VARIABLES LIKE 'default_storag%'
作用范围
分为这两种:
GLOBAL
:全局变量,影响服务器的整体操作。SESSION
(LOCAL) :会话变量,影响某个客户端连接的操作。
设置
语句一:SET GLOBAL default_storage_engine = MyISAM;
语句二:SET @@GLOBAL.default_storage_engine = MyISAM;
语句一:SET SESSION default_storage_engine = MyISAM;
语句二:SET @@SESSION.default_storage_engine = MyISAM;
语句三:SET default_storage_engine = MyISAM;
SET 系统变量名 = 值`和`SET SESSION 系统变量名 = 值`是等价的
状态变量
SHOW VARIABLES LIKE 'character_set_server';
字符集 和 比较规则(排序规则)的应用
比方说utf8
字符集默认的比较规则就是utf8_general_ci
。
MySQL
有4个级别的字符集和比较规则,分别是:
- 服务器级别
通过启动选项或者在服务器程序运行过程中使用SET
语句修改这两个变量的值
[server]
character_set_server=gbk
collation_server=gbk_chinese_ci
- 数据库级别
mysql> CREATE DATABASE charset_demo_db
-> CHARACTER SET gb2312
-> COLLATE gb2312_chinese_ci;
Query OK, 1 row affected (0.01 sec)
- 表级别
mysql> CREATE TABLE t(
-> col VARCHAR(10)
-> ) CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 0 rows affected (0.03 sec)
- 列级别
CREATE TABLE 表名(
列名 字符串类型 [CHARACTER SET 字符集名称] [COLLATE 比较规则名称],
其他列...
);
ALTER TABLE 表名 MODIFY 列名 字符串类型 [CHARACTER SET 字符集名称] [COLLATE 比较规则名称];
编解码有关的系统变量
character_set_client
服务器解码请求时使用的字符集character_set_connection
服务器运行过程中使用的字符集character_set_results
服务器向客户端返回数据时使用的字符集
设置
- SET NAMES 字符集名; => 可以同时设定三个系统变量
- 配置文件 设置启动选项
[client]
default-character-set=utf8
Innodb
4种不同类型的行格式
,分别是Compact
、Redundant
、Dynamic
和Compressed
行格式
CREATE TABLE 表名 (列的信息) ROW_FORMAT=行格式名称
ALTER TABLE 表名 ROW_FORMAT=行格式名称
- 页是
MySQL
中磁盘和内存交互的基本单位,16KB, 也是MySQL
是管理存储空间的基本单位。 - Compact
![9d1f5e9ca85c37bb05940c7e12f0af10.png](https://i-blog.csdnimg.cn/blog_migrate/51d502b2610bec70056e62c83ab21507.jpeg)
如果该可变字段允许存储的最大字节数(M×W
)超过255字节并且真实存储的字节数(L
)超过127字节,则使用2个字节,否则使用1个字节。
变长字段长度列表中只存储值为非NULL的列内容占用的长度,值为NULL的列的长度是不储存的
Redundant 记录的是偏移,没有NULL值列表
Dynamic,Compressed不会在真实数据处存储字符串的前768个字,只记录在其他页面的地址
Compressed会使用算法压缩