MySQL 9.0 參考手冊  /  ...  /  MySQL 的主要功能

1.2.2 MySQL 的主要功能

本節說明 MySQL 資料庫軟體的一些重要特性。在大多數方面,路線圖適用於所有版本的 MySQL。有關在特定系列中引入 MySQL 的功能資訊,請參閱相應手冊的 簡而言之章節

內部結構與可移植性

  • 以 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 BYORDER BY 子句。支援群組函數(COUNT()AVG()STD()SUM()MAX()MIN()GROUP_CONCAT())。

  • 支援具有標準 SQL 和 ODBC 語法的 LEFT OUTER JOINRIGHT OUTER JOIN

  • 支援標準 SQL 要求的表格和欄位的別名。

  • 支援 DELETEINSERTREPLACEUPDATE,以傳回已變更(受影響)的資料列數,或者透過在連線至伺服器時設定旗標來傳回比對的資料列數。

  • 支援 MySQL 特定的 SHOW 陳述式,這些陳述式會擷取有關資料庫、儲存引擎、表格和索引的資訊。支援根據標準 SQL 實作的 INFORMATION_SCHEMA 資料庫。

  • EXPLAIN 陳述式,用於顯示最佳化工具如何解析查詢。

  • 函數名稱獨立於表格或欄位名稱。例如,ABS 是有效的欄位名稱。唯一的限制是,對於函數呼叫,函數名稱與其後的 (之間不得有空格。請參閱 第 11.3 節,〈關鍵字和保留字〉

  • 您可以在同一陳述式中參照來自不同資料庫的表格。

安全性

  • 非常彈性且安全的權限和密碼系統,可啟用基於主機的驗證。

  • 透過在連線至伺服器時加密所有密碼流量,確保密碼安全。

可擴展性和限制

  • 支援大型資料庫。我們使用包含 5000 萬筆記錄的資料庫來使用 MySQL 伺服器。我們也知道有些使用者使用 MySQL 伺服器,其中包含 200,000 個表格和約 5,000,000,000 個資料列。

  • 每個資料表最多支援 64 個索引。每個索引可以由 1 到 16 個欄位或部分欄位組成。InnoDB 資料表的最大索引寬度為 767 位元組或 3072 位元組。請參閱第 17.21 節「InnoDB 限制」MyISAM 資料表的最大索引寬度為 1000 位元組。請參閱第 18.2 節「MyISAM 儲存引擎」。索引可以使用 CHARVARCHARBLOBTEXT 欄位類型的前綴。

連線能力

  • 用戶端可以使用多種協定連線到 MySQL 伺服器

    • 用戶端可以在任何平台上使用 TCP/IP 通訊端連線。

    • 在 Windows 系統上,如果伺服器啟動時啟用了 named_pipe 系統變數,則用戶端可以使用具名管道連線。如果啟動 Windows 伺服器時啟用了 shared_memory 系統變數,則 Windows 伺服器也支援共用記憶體連線。用戶端可以使用 --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)、germanbig5ujis、幾種 Unicode 字元集等等。例如,斯堪的納維亞字元 åäö 允許在資料表和欄位名稱中使用。

  • 所有資料都以選擇的字元集儲存。

  • 排序和比較會根據預設字元集和校對完成。可以在啟動 MySQL 伺服器時變更此設定(請參閱第 12.3.2 節「伺服器字元集和校對」)。若要查看非常進階的排序範例,請查看捷克排序程式碼。MySQL 伺服器支援許多不同的字元集,這些字元集可以在編譯時和執行時指定。

  • 伺服器時區可以動態變更,而且個別用戶端可以指定自己的時區。請參閱第 7.1.15 節「MySQL 伺服器時區支援」

用戶端和工具

  • MySQL 包含數個用戶端和公用程式。這些包括命令列程式,例如 mysqldumpmysqladmin,以及圖形程式,例如 MySQL Workbench

  • MySQL 伺服器內建支援 SQL 陳述式,以檢查、最佳化和修復資料表。這些陳述式可以透過 mysqlcheck 用戶端從命令列取得。MySQL 還包含 myisamchk,這是一個非常快速的命令列公用程式,可用於在 MyISAM 資料表上執行這些作業。請參閱第 6 章「MySQL 程式」

  • 可以使用 --help-? 選項叫用 MySQL 程式,以取得線上協助。