1. 授權模式與成本
| 平台 | 安裝方式 | 費用 |
| Windows NT/9x | 任意 | $200 |
| Unix/Linux | 自行安裝 | 免費 |
| Unix/Linux | 第三方安裝 | $200 |
| 嵌入應用組件 | — | $200 |
企業級支持合同另行購買,詳見官網最新報價。
2. 安裝部署
- 提供 RPM、DEB、TGZ 等多種包格式
- RPM 安裝自動生成
/etc/rc.d/init.d/mysql 啟動腳本,多用戶模式自啟動
- 守護進程
mysqld 內存佔用極低(~500KB + 4MB 共享),按需載入 CPU,適合資源受限環境
- 客戶端庫、語言綁定(Perl/Python/PHP/Java/C)可獨立安裝
3. 核心數據類型
數值類型
| 類型 | 範圍(有符號) | 存儲 |
| TINYINT | -128 ~ 127 | 1 字節 |
| SMALLINT | -32768 ~ 32767 | 2 字節 |
| MEDIUMINT | -8388608 ~ 8388607 | 3 字節 |
| INT | -2147483648 ~ 2147483647 | 4 字節 |
| BIGINT | -9223372036854775808 ~ 9223372036854775807 | 8 字節 |
| FLOAT | ±1.175E-38 ~ ±3.402E+38 | 4 字節 |
| DOUBLE | ±2.225E-308 ~ ±1.797E+308 | 8 字節 |
| DECIMAL(M,D) | 精確定點數,M 總位數,D 小數位 | M+2 字節 |
選型原則:能滿足業務範圍的最小類型,節省空間提升緩存命中。
字符串類型
| 類型 | 最大長度 | 存儲開銷 | 適用場景 |
| CHAR(M) | M ≤ 255 | M 字節 | 定長,如 MD5、郵編 |
| VARCHAR(M) | M ≤ 65535 | L+1 字節 | 變長通用文本 |
| TINYTEXT/BLOB | 255 | L+1 | 極短文本/二進制 |
| TEXT/BLOB | 64KB | L+2 | 普通長文本/圖片 |
| MEDIUMTEXT/BLOB | 16MB | L+3 | 長文章/文檔 |
| LONGTEXT/BLOB | 4GB | L+4 | 超大對象 |
| ENUM | 65535 成員 | 1-2 字節 | 單選枚舉,如狀態碼 |
| SET | 64 成員 | 1-8 字節 | 多選集合,如標籤 |
日期時間類型
| 類型 | 格式 | 範圍 | 存儲 |
| DATE | YYYY-MM-DD | 1000-01-01 ~ 9999-12-31 | 3 字節 |
| TIME | HH:MM:SS | -838:59:59 ~ 838:59:59 | 3 字節 |
| DATETIME | YYYY-MM-DD HH:MM:SS | 1000-01-01 ~ 9999-12-31 | 8 字節 |
| TIMESTAMP | YYYYMMDDHHMMSS | 1970-01-01 ~ 2038-01-19 | 4 字節 |
| YEAR | YYYY | 1901 ~ 2155 | 1 字節 |
4. SQL 兼容性與擴展
- 不區分大小寫比較:默認
CHAR/VARCHAR 比較忽略大小寫
- 用戶自定義函數 (UDF):編譯為
.so 共享庫,CREATE FUNCTION 載入,與內建函數同權
- 缺失標準特性:無子查詢(早期版本)、無視圖、無存儲過程(5.0 前)、無標準外鍵/級聯/檢查約束(MyISAM)
- 兼容性妥協:解析器接受但忽略
FOREIGN KEY、CHECK 語法,便於遷移腳本無報錯運行
5. 存儲引擎與事務
- 早期僅 MyISAM:表級鎖、無事務、全文索引
- 5.0+ 引入 InnoDB:行級鎖、ACID 事務、外鍵、崩潰恢復
- 可混合使用:
CREATE TABLE t (...) ENGINE=InnoDB
6. 安全體系
- 基於「主機+用戶+密碼」三元組的權限矩陣
GRANT/REVOKE 後需 FLUSH PRIVILEGES 生效(早期版本)
- 權限表:
user、db、tables_priv、columns_priv
7. 備份與恢復
- 邏輯備份:
mysqldump --single-transaction --routines --triggers 導出 SQL
- 物理備份:停庫或
FLUSH TABLES WITH READ LOCK 後拷貝數據目錄(MyISAM 適用)
- 二進制日誌:記錄所有 DML/DDL,支持時間點恢復(PITR)
- 複製:主從異步/半同步複製,讀寫分離、災備
8. 連接生態
- C API (libmysqlclient) 為基礎
- 語言綁定:PHP (mysqli/PDO)、Python (mysqlclient/PyMySQL)、Java (Connector/J)、Go (go-sql-driver)、Node.js (mysql2)
- ODBC/JDBC/ADO.NET 標準驅動
9. 總結定位
MySQL 定位「輕量級、高性能、易部署」的 Web 應用首選數據庫。犧牲了部分企業級特性(早期無事務、存儲過程、完整 RI),換取極致的讀寫吞吐與運維簡單度。隨著 InnoDB 成熟、8.0 引入 CTE、窗口函數、JSON、GIS 等現代特性,已能覆蓋絕大多數中大型業務場景。