| 方式 | 默认开启 | 支持系统 | 只支持本机 | 如何开启 | 参数配置 |
|---|---|---|---|---|---|
| TCP/IP | 是 | 所有系统 | 否 | –skip-networking=yes/no | –port–bind-address |
| TLS/SSL | 是 | 所有系统(基于TCP/IP)之上 | 否 | –ssl=yes/no | –ssl-* options |
| Unix Sockets | 是 | 类Unix系统 | 是 | –socket= 来关闭 | –socket=socket path |
| Shared Memory | 否 | Windows系统 | 是 | –shared-memory=on/off. | –shared-memory-base-name= |
| Named pipes | 否 | Windows系统 | 否 | –enable-named-pipe=on/off | –socket= |
协议头:
每个协议头共4个字节
- 包数据长度:
前三个字节表示数据部分的长度(不包括协议头),三字节能表示的最大长度是16M-1(2^24 - 1),如果要发送的数据部分大于这个长度,要进行拆包,每16M-1个长度为一包。接收端在接受数据的时候,如果检测到包的长度是16M-1,说明后续还有数据部分,直到接收到16M-1长度的数据包结束。这意味着最后一包的数据长度可能为0.
序号:
1个字节,从0开始递增。当发送一个新的sql、数据库重连,该值清0(函数sql/Net_serv.cc : net_clear).
数据类型:
除了固定长度的整型或者字符串之外,还有其他几种类型的数据。(固定长度字段数据的存取:include/Mybyte_order.h : 存值 intstore 取值:intkorr 多字节的处理按照小端优先的方式)
1. 可变长度的整数
对该类数据的存取在函数:sql-common/Pack.c: 存整数: net_store_length 读整数:net_field_length
如果数值251,直接用一个字节存储这个值。
如果251=数值2^16, 采用3个字节存储,第一个字节是252, 另外2个字节存储整数内容
如果2^16=数值2^24,采用4字节存储,第一个字节是252,另外3个字节存储整数内容
如果2^24=数值2^64,采用9字节存储,第一个字节255,另外8字节存储整数内容
如果第一个字节为251,表示该整数字段为null
如果第一个字节为255,表示该字节是ERR包的第一个字节
2. 可编码长度的字符串
字符串的长度采用可变长度的整数进行编码。
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。 SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了 SQL 的 DML 部分:
SELECT - 从数据库表中获取数据UPDATE - 更新数据库表中的数据DELETE - 从数据库表中删除数据INSERT INTO - 向数据库表中插入数据SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
CREATE DATABASE - 创建新数据库ALTER DATABASE - 修改数据库CREATE TABLE - 创建新表ALTER TABLE - 变更(改变)数据库表DROP TABLE - 删除表CREATE INDEX - 创建索引(搜索键)DROP INDEX - 删除索引
这篇文章从宏观和使用角度去了解Mysql是什么,后续深入。也请大家多多关注脚本之家的更多内容