mysqlnd

Mysql Native驅動(Mysql Native Driver 簡稱:mysqlnd )在PHP5.3.0版本中被引入。PHP5.4之後的版本mysqlnd被作為默認配置選項。 由zend 公司開發的MySQL資料庫驅動,採用PHP開源協定(即 PHP license)避免了任何可能存在的著作權問題。而舊的libmysql是有Mysql AB公司(現在的Oracle Corporation)開發,依照mysql license。它是新的函式館,libmysql有的功能它幾乎都有,但是mysqlnd並不像libmysql那樣作為通用庫,它是專門為PHP而寫的一個庫,用了PHP的內在管理函式以及一些網路流的函式。

基本介紹

  • 外文名:mysqlnd
  • 全稱:Mysql Native Driver
  • 性質:驅動
  • 引入版本:PHP5.3.0版本
簡介,編譯方法,

簡介

由於著作權問題,PHP5中沒有默認支持MySQL,不像以前的PHP4那樣可以直接使用MySQL函式。Mysql支持還需要把libmysql.dll複製到windows目錄,然後修改php.ini等等,比較麻煩。
PHP最近發布了5.3版本,在該版本當中,提供了一個mysqlnd庫,用來訪問MySQL資料庫,大大提升了PHP的資料庫訪問性能。
我們知道,PHP訪問MySQL資料庫,是通過MySQL資料庫的libmysql client庫,這個libmysql client是用C/C++編寫的,雖然一直以來PHP通過libmysql訪問資料庫性能也一直很好,但是卻無法利用PHP本身的很多特性。
mysqlnd提供了和Zend引擎高度的集成性,更加快速的執行速度,更少的記憶體消耗,利用了PHP的Stream API,以及客戶端快取機制。由於mysqlnd是透過Zend引擎,因此提供更多高級特性,以及有效利用Zend進行加速。
從下圖可以看出來,libmysql是直接訪問資料庫的,而mysqlnd是通過Zend訪問資料庫。
MySQLnd成為php 5.4中的默認mysql驅動,它有如下優點:
mysqlnd
1、mysqlnd更容易編譯; 因為它是php源碼樹的一個組成部分
2、mysqlnd和php內部機制結合更緊密,是最佳化過的mysql驅動
3、mysqlnd更節省記憶體,從測試結果來看,比傳統的mysql擴展節省40%的記憶體
4、mysqlnd更快
5、mysqlnd提供了豐富的性能統計功能
6、mysqlnd使用了PHP license以避免不必要的著作權糾紛
這個改動應同時對mysqli和pdo_mysql擴展生效。
mysqlnd庫是高度最佳化和緊密集成到PHP,使用PHP內部C基礎設施的無縫集成。全新開發的新驅動,拋棄了原來的用c語言做的外掛在php上的獨立模組。mysqlnd 直接使用php內部的變數管理,查詢結果直接進入php,原來是在c模組中另外開闢記憶體空間,然後再一條一條fetch出來。
php5.3支持mysqlnd。

編譯方法

cd php-5.3.x
./configure --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd 加上你的參數
make
make install
php 5.4及以上編譯時可以不加mysqlnd 默認即為mysqlnd。
phpinfo()截圖
mysqlnd
是否啟用了 mysqlnd ? 您只要查看 phpinfo中mysql 配置項Client API version 是否是 mysqlnd 即可確認。

相關詞條

熱門詞條

聯絡我們