它不是什麼
儘管 MySQL 原生驅動程式是作為 PHP 擴充功能編寫的,但請務必注意,它並未向 PHP 程式設計師提供新的 API。 MySQL 資料庫連線的程式設計師 API 由 MySQL 擴充功能、mysqli
和 PDO MYSQL 提供。這些擴充功能現在可以使用 MySQL 原生驅動程式的服務與 MySQL 伺服器進行通訊。因此,您不應將 MySQL 原生驅動程式視為 API。
為何使用它?
使用 MySQL 原生驅動程式比使用 MySQL 用戶端程式庫提供了許多優勢。
較舊的 MySQL 用戶端程式庫是由 MySQL AB (現為 Oracle 公司) 編寫的,因此以 MySQL 授權發佈。這最終導致 PHP 中預設停用 MySQL 支援。但是,MySQL 原生驅動程式已作為 PHP 專案的一部分開發,因此以 PHP 授權發佈。這消除了過去一直有問題的授權問題。
此外,過去您需要針對 MySQL 用戶端程式庫的副本來建置 MySQL 資料庫擴充功能。這通常意味著您需要在建置 PHP 原始碼的電腦上安裝 MySQL。此外,當您的 PHP 應用程式執行時,MySQL 資料庫擴充功能會在執行階段呼叫到 MySQL 用戶端程式庫檔案,因此該檔案需要安裝在您的系統上。使用 MySQL 原生驅動程式,情況不再如此,因為它已包含在標準發行版中。因此,您不需要安裝 MySQL 即可建置 PHP 或執行 PHP 資料庫應用程式。
由於 MySQL 原生驅動程式是作為 PHP 擴充功能編寫的,因此它與 PHP 的運作緊密結合。這可提高效率,尤其是在記憶體使用方面,因為驅動程式使用 PHP 記憶體管理系統。它也支援 PHP 記憶體限制。使用 MySQL 原生驅動程式會產生與使用 MySQL 用戶端程式庫相當或更好的效能,它始終確保最有效的記憶體使用。記憶體效率的一個範例是,當使用 MySQL 用戶端程式庫時,每一列都會在記憶體中儲存兩次,而使用 MySQL 原生驅動程式時,每一列只會在記憶體中儲存一次。
注意:回報記憶體使用量
由於 MySQL 原生驅動程式使用 PHP 記憶體管理系統,因此可以使用 memory_get_usage() 追蹤其記憶體使用量。這在使用 libmysqlclient 時是不可能的,因為它改為使用 C 函式 malloc()。
特殊功能
當 MySQL 資料庫擴充功能使用 MySQL 用戶端程式庫時,MySQL 原生驅動程式還提供一些特殊功能。這些特殊功能列於下方
改善持久連線
特殊函式 mysqli_fetch_all()
效能統計呼叫:mysqli_get_client_stats()、mysqli_get_connection_stats()
效能統計設施可以證明在識別效能瓶頸方面非常有用。
當與 mysqli
擴充功能一起使用時,MySQL 原生驅動程式也允許持久連線。
SSL 支援
MySQL 原生驅動程式支援 SSL。
壓縮協定支援
MySQL 原生驅動程式支援壓縮用戶端伺服器協定。如果設定為使用 MySQL 原生驅動程式,擴充功能 ext/mysqli
也可以利用此功能。請注意,當與 mysqlnd 一起使用時,PDO_MYSQL
不 支援壓縮。
具名管道支援
具名管道可用於在 Windows 環境中連線。