本節描述了MySQL數據庫軟件的一些重要特征。在大多數方面,該路線圖適用於所有版本的MySQL。有關特定於系列的MySQL中引入的功能的信息,請參見相應手冊的 “ 簡而言之 ”一節:
-
MySQL 8.0:第1.3節“ MySQL 8.0的新增功能”
-
MySQL 5.7:MySQL 5.7的新增功能
-
MySQL 5.6:MySQL 5.6的新增功能
內部和便攜性
-
用C和C ++編寫。
-
經過廣泛的不同編譯器測試。
-
可在許多不同平台上使用。參見 https://www.mysql.com/support/supportedplatforms/database.html。
-
為了便於移植,請使用CMake進行配置。
-
已通過Purify(商用內存泄漏檢測器)以及GPL工具Valgrind(http://developer.kde.org/~sewardj/)進行了測試。
-
使用具有獨立模塊的多層服務器設計。
-
設計為使用內核線程完全多線程,可以輕松使用多個CPU(如果有)。
-
提供事務性和非事務性存儲引擎。
-
使用
MyISAM
索引壓縮非常快的B樹磁盤表()。 -
旨在使其相對容易地添加其他存儲引擎。如果要為內部數據庫提供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()
)。 -
支持
LEFT OUTER JOIN
和 支持RIGHT OUTER JOIN
標准SQL和ODBC語法。 -
支持標准SQL要求的表和列別名。
-
支持
DELETE
,INSERT
,REPLACE
,和UPDATE
以返回更改(受影響)的行數,或返回通過連接到服務器時設置標志,而不是匹配的行的數量。 -
支持特定於MySQL的
SHOW
語句,該語句檢索有關數據庫,存儲引擎,表和索引的信息。支持INFORMATION_SCHEMA
數據庫,根據標准SQL實現。 -
一個
EXPLAIN
語句來顯示優化器如何解決一個查詢。 -
函數名稱與表或列名稱的獨立性。例如,
ABS
是一個有效的列名。唯一的限制是對於函數調用,函數名稱和其后的“(
”之間不允許有空格 。請參見 第9.3節“關鍵字和保留字”。 -
您可以在同一條語句中引用來自不同數據庫的表。
安全
-
特權和密碼系統,非常靈活和安全,並且可以進行基於主機的驗證。
-
連接到服務器時,通過對所有密碼通信進行加密來實現密碼安全。
可擴展性和限制
-
支持大型數據庫。我們將MySQL Server與包含5000萬條記錄的數據庫一起使用。我們也知道使用MySQL Server的用戶有200,000個表和大約5,000,000,000行。
-
每個表最多支持64個索引。每個索引可以包含1到16列或部分列。
InnoDB
表的最大索引寬度為767字節或3072字節。請參見第15.22節“ InnoDB限制”。MyISAM
表的最大索引寬度為 1000字節。請參見 第16.2節“ MyISAM存儲引擎”。索引可使用的柱的前綴CHAR
,VARCHAR
,BLOB
,或TEXT
列類型。
連接性
-
客戶端可以使用多種協議連接到MySQL Server:
-
客戶端可以在任何平台上使用TCP / IP套接字進行連接。
-
在Windows系統上,如果服務器在
named_pipe
啟用系統變量的情況下啟動,則客戶端可以使用命名管道進行連接 。如果在shared_memory
啟用系統變量的情況下啟動,Windows服務器也支持共享內存連接 。客戶端可以使用該--protocol=memory
選項通過共享內存進行連接 。 -
在Unix系統上,客戶端可以使用Unix域套接字文件進行連接。
-
-
MySQL客戶端程序可以用多種語言編寫。用C編寫的客戶端庫可用於用C或C ++編寫的客戶端,或提供C綁定的任何語言的客戶端。
-
提供了C,C ++,Eiffel,Java,Perl,PHP,Python,Ruby和Tcl的API,使MySQL客戶端可以用多種語言編寫。請參見第28章,連接器和API。
-
連接器/ ODBC(MyODBC)接口為使用ODBC(開放數據庫連接)連接的客戶端程序提供MySQL支持。例如,您可以使用MS Access連接到MySQL服務器。客戶端可以在Windows或Unix上運行。連接器/ ODBC源可用。支持所有ODBC 2.5功能,以及許多其他功能。參見《 MySQL Connector / ODBC開發人員指南》。
-
Connector / J接口為使用JDBC連接的Java客戶端程序提供MySQL支持。客戶端可以在Windows或Unix上運行。連接器/ J源可用。參見《 MySQL Connector / J 5.1開發人員指南》。
-
MySQL Connector / NET使開發人員可以輕松創建需要與MySQL安全,高性能數據連接的.NET應用程序。它實現了必需的ADO.NET接口,並集成到ADO.NET感知工具中。開發人員可以使用他們選擇的.NET語言來構建應用程序。MySQL Connector / NET是用100%純C#編寫的完全托管的ADO.NET驅動程序。參見《 MySQL Connector / NET開發人員指南》。
本土化
-
服務器可以用多種語言向客戶端提供錯誤消息。請參見第10.12節“設置錯誤消息語言”。
-
幾個不同的字符集,包括全面支持
latin1
(CP1252) ,german
,big5
,ujis
一些Unicode字符集等。例如,在表名和列名中允許使用斯堪的納維亞字符“å
”, “ä
”和 “ö
”。 -
所有數據都保存在所選字符集中。
-
排序和比較是根據默認字符集和排序規則完成的。可以在啟動MySQL服務器時更改此設置(請參見 第10.3.2節“服務器字符集和排序規則”)。要查看非常高級的排序示例,請查看Czech排序代碼。MySQL Server支持許多不同的字符集,可以在編譯時和運行時指定它們。
-
服務器時區可以動態更改,並且各個客戶端可以指定自己的時區。請參見 第5.1.14節“ MySQL服務器時區支持”。
客戶和工具
-
MySQL包括幾個客戶端程序和實用程序。這些包括命令行程序(例如 mysqldump和 mysqladmin)以及圖形程序(例如 MySQL Workbench)。
-
MySQL Server內置了對SQL語句的支持,以檢查,優化和修復表。這些語句可通過 mysqlcheck客戶端從命令行使用。MySQL還包括 myisamchk,這是一個非常快的命令行實用程序,用於在
MyISAM
表上執行這些操作。請參閱第4章,MySQL程序。 -
可以使用
--help
或-?
選項調用MySQL程序以獲得在線幫助。