本節說明 MySQL 資料庫軟體的一些重要特性。在大多數方面,此藍圖適用於所有版本的 MySQL。如需瞭解在特定版本中引入 MySQL 的功能資訊,請參閱適當手冊的「簡而言之」章節。
MySQL 8.4:第 1.4 節,〈自 MySQL 8.0 以來 MySQL 8.4 的新功能〉
MySQL 8.0:MySQL 8.0 的新功能
MySQL 5.7:MySQL 5.7 的新功能
內部結構與可移植性
以 C 和 C++ 編寫。
使用各種不同的編譯器進行測試。
可在許多不同的平台上運作。請參閱 https://mysql.dev.org.tw/support/supportedplatforms/database.html。
為了可移植性,使用 CMake 進行配置。
使用 Purify(商業記憶體洩漏偵測器)以及 Valgrind(GPL 工具)(https://valgrind.org/)進行測試。
使用具有獨立模組的多層伺服器設計。
設計為使用核心執行緒完全多執行緒,以便輕鬆使用多個 CPU(如果有的話)。
提供交易式和非交易式儲存引擎。
使用速度非常快的 B 樹磁碟表格 (
MyISAM
) 進行索引壓縮。設計為相對容易新增其他儲存引擎。如果您想要為內部資料庫提供 SQL 介面,這會很有用。
使用非常快速的執行緒式記憶體配置系統。
使用最佳化的巢狀迴圈聯結執行非常快速的聯結。
實作在記憶體中的雜湊表,用作暫存表格。
使用高度最佳化的類別庫實作 SQL 函數,這些類別庫應盡可能快速。通常在查詢初始化之後完全不會進行記憶體配置。
將伺服器作為獨立程式提供,以便在用戶端/伺服器網路環境中使用。
資料類型
陳述式與函數
在查詢的
SELECT
清單和WHERE
子句中,完全支援運算子和函數。例如mysql> SELECT CONCAT(first_name, ' ', last_name) -> FROM citizen -> WHERE income/dependents > 10000 AND age > 30;
完全支援 SQL
GROUP BY
和ORDER BY
子句。支援群組函數 (COUNT()
、AVG()
、STD()
、SUM()
、MAX()
、MIN()
和GROUP_CONCAT()
)。支援使用標準 SQL 和 ODBC 語法的
LEFT OUTER JOIN
和RIGHT OUTER JOIN
。支援標準 SQL 所需的表格和資料行別名。
支援
DELETE
、INSERT
、REPLACE
和UPDATE
來傳回已變更(受影響)的列數,或者在連線至伺服器時設定旗標來傳回改為符合的列數。支援 MySQL 特有的
SHOW
陳述式,這些陳述式會擷取關於資料庫、儲存引擎、表格和索引的資訊。支援根據標準 SQL 實作的INFORMATION_SCHEMA
資料庫。使用
EXPLAIN
陳述式顯示最佳化工具如何解析查詢。函數名稱獨立於表格或資料行名稱。例如,
ABS
是有效的資料行名稱。唯一的限制是,對於函數呼叫,函數名稱與其後的「(
」之間不允許有空格。請參閱 第 11.3 節,〈關鍵字和保留字〉。您可以在同一個陳述式中參照來自不同資料庫的表格。
安全性
非常靈活且安全的權限和密碼系統,可啟用主機型驗證。
連線至伺服器時加密所有密碼流量,以確保密碼安全。
可擴充性和限制
支援大型資料庫。我們將 MySQL 伺服器用於包含 5000 萬筆記錄的資料庫。我們也知道有使用者將 MySQL 伺服器用於具有 200,000 個表格和約 5,000,000,000 列的資料庫。
每個資料表最多支援 64 個索引。每個索引可以由 1 到 16 個欄位或欄位的部分組成。對於
InnoDB
資料表,最大索引寬度為 767 位元組或 3072 位元組。請參閱第 17.21 節「InnoDB 限制」。對於MyISAM
資料表,最大索引寬度為 1000 位元組。請參閱第 18.2 節「MyISAM 儲存引擎」。索引可以為CHAR
、VARCHAR
、BLOB
或TEXT
欄位類型使用欄位的前綴。
連線能力
用戶端可以使用多種協定連線到 MySQL 伺服器
用戶端可以在任何平台上使用 TCP/IP 通訊端連線。
在 Windows 系統上,如果伺服器啟動時啟用了
named_pipe
系統變數,用戶端可以使用具名管道連線。如果 Windows 伺服器啟動時啟用了shared_memory
系統變數,則也支援共用記憶體連線。用戶端可以使用--protocol=memory
選項,透過共用記憶體連線。在 Unix 系統上,用戶端可以使用 Unix 網域通訊端檔案連線。
MySQL 用戶端程式可以使用多種語言編寫。以 C 語言編寫的用戶端程式庫適用於以 C 或 C++ 編寫的用戶端,或任何提供 C 語言綁定的語言。
提供 C、C++、Eiffel、Java、Perl、PHP、Python、Ruby 和 Tcl 的 API,讓 MySQL 用戶端可以使用多種語言編寫。請參閱第 31 章《連接器和 API》。
Connector/ODBC (MyODBC) 介面為使用 ODBC (開放式資料庫連線) 連線的用戶端程式提供 MySQL 支援。例如,您可以使用 MS Access 連線到您的 MySQL 伺服器。用戶端可以在 Windows 或 Unix 上執行。Connector/ODBC 來源是可用的。支援所有 ODBC 2.5 功能,以及許多其他功能。請參閱MySQL Connector/ODBC 開發人員指南。
Connector/J 介面為使用 JDBC 連線的 Java 用戶端程式提供 MySQL 支援。用戶端可以在 Windows 或 Unix 上執行。Connector/J 來源是可用的。請參閱MySQL Connector/J 開發人員指南。
MySQL Connector/NET 使開發人員能夠輕鬆建立需要與 MySQL 建立安全、高效能資料連線的 .NET 應用程式。它實作所需的 ADO.NET 介面,並整合到支援 ADO.NET 的工具中。開發人員可以使用他們選擇的 .NET 語言來建置應用程式。MySQL Connector/NET 是一個完全受管理的 ADO.NET 驅動程式,以 100% 純 C# 編寫。請參閱MySQL Connector/NET 開發人員指南。
在地化
伺服器可以為用戶端提供多種語言的錯誤訊息。請參閱第 12.12 節「設定錯誤訊息語言」。
完全支援數種不同的字元集,包括
latin1
(cp1252)、german
、big5
、ujis
、數個 Unicode 字元集等等。例如,斯堪的納維亞字元 「å
」、「ä
」 和 「ö
」允許在資料表和欄位名稱中使用。所有資料都以選擇的字元集儲存。
排序和比較是根據預設字元集和定序完成的。可以在啟動 MySQL 伺服器時變更此設定(請參閱第 12.3.2 節「伺服器字元集和定序」)。若要查看非常進階排序的範例,請查看捷克排序程式碼。MySQL 伺服器支援許多不同的字元集,這些字元集可以在編譯時和執行時指定。
伺服器時區可以動態變更,而且個別用戶端可以指定自己的時區。請參閱第 7.1.15 節「MySQL 伺服器時區支援」。
用戶端和工具
MySQL 包括數個用戶端和公用程式。這些包括 mysqldump 和 mysqladmin 等命令列程式,以及 MySQL Workbench 等圖形程式。
MySQL 伺服器內建支援 SQL 陳述式,以檢查、最佳化和修復資料表。這些陳述式可透過 mysqlcheck 用戶端從命令列取得。MySQL 也包括 myisamchk,這是一個非常快速的命令列公用程式,可在
MyISAM
資料表上執行這些作業。請參閱第 6 章《MySQL 程式》。MySQL 程式可以使用
--help
或-?
選項來叫用,以取得線上說明。