| 方式 | 默認開啟 | 支持系統 | 只支持本機 | 如何開啟 | 參數配置 |
|---|---|---|---|---|---|
| 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是什么,后續深入。也請大家多多關注腳本之家的更多內容