PHP 5.3以上版本推薦使用mysqlnd驅動
什麼是mysqlnd?
mysqldnd(MySQL native driver)是由PHP原始碼提供的mysql驅動連線程式碼。它的目的是代替舊的libmysql驅動。
傳統的安裝php的方式中,我們在編譯PHP時,一般指定以下幾項:
--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql/bin/mysql_config
這實際上就是使用了MySQL官方自帶的libmysql驅動, 這是比較老的驅動, PHP 5.3開始已經不建議使用它了, 而建議使用mysqlnd。
PDO與mysqlnd, libmysql又是何種關係?
PDO是一個應用層抽象類,底層和MySQL server連線互動需要MySQL驅動的支援。也就是說無論你使用了何種驅動,都可以使用PDO。
PDO是提供了PHP應用程式層API介面,而mysqlnd、libmysql則負責與MySQL server進行網路協議互動(它並不提供php應用程式層API功能)。
為什麼使用mysqlnd驅動?
1. 傳統的PHP訪問MySQL資料庫,是透過MySQL資料庫的libmysql client庫,這個libmysql client是用C/C++編寫的,雖然一直以來PHP透過libmysql訪問資料庫效能也一直很好,但是卻無法利用PHP本身的很多特性。
mysqlnd提供了和Zend引擎高度的整合性,更加快速的執行速度,更少的記憶體消耗,利用了PHP的Stream API,以及客戶段快取機制。由於mysqlnd是透過Zend引擎,因此提供更多高階特性,以及有效利用Zend進行加速,原理圖如下:
從上圖可以看出來,libmysql是直接訪問資料庫的,而mysqlnd是透過Zend訪問資料庫。
2. libmysql驅動是由MySQL AB公司(現在是oracle公司)編寫, 並按MySQL license許可協議釋出,所以在PHP中預設是被禁用的。而mysqlnd是由php官方開發的驅動,以php license許可協議釋出,故就規避了許可協議和版權的問題
3. mysqlnd內建於PHP原始碼,故你在編譯安裝php時就不需要預先安裝MySQL server也可以提供MySQL client API (mysql_connect、pdo、mysqli),這將減化一些工作量
4. 一些新的或增強的功能
增強的持久連線
引入特有的函式mysqli_fetch_all()
引入一些效能統計函式 mysqli_get_cache_stats(), mysqli_get_client_stats(), mysqli_get_connection_stats(),上述函式,可很容易分析mysql查詢的效能瓶頸
SSL支援(從php 5.3.3開始有效)
壓縮協議支援
命名管道支援(php 5.4.0開始有效)
怎麼安裝mysqlnd驅動?
編譯php時,修改以下幾個項引數即可,提示: 如果使用mysqlnd,並不需要預先安裝mysql
--with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
如果在phpinfo輸出的mysql項中發現client API Version : mysqlnd, 說明mysqlnd驅動安裝成功.
延伸:PHP中MySQL、MySQLi和PDO三者的簡單區別
PDO 是官方推薦的,更為通用的資料庫訪問方式,如果你沒有特殊需求,那麼你最好學習和使用 PDO.
但如果你需要使用 MySQL 所特有的高階功能,那麼你可能需要嘗試一下 MySQLi, 因為 PDO 為了能夠同時在多種資料庫上使用,不會包含那些 MySQL 獨有的功能。
MySQLi 是 MySQL 的增強介面,同時提供程式導向和麵向物件介面,也是目前推薦的 MySQL 驅動,舊的C風格 MySQL 介面將會在今後被預設關閉
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/855/viewspace-2802948/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 推薦一個整合環境,appserv 沒找到有PHP5.3以上的。APPPHP
- PHP7 以上版本 使用 xdebug 踩坑PHP
- PHP>5.3版本部分新功能PHP
- PHP Mysql support: 是mysql 還是mysqlnd?PHPMySql
- MySQL 5.1.6以上版本動態開啟慢查詢日誌薦MySql
- php使用mysqlnd引發的一些問題處理PHPMySql
- PHPExcel 在 PHP7.0 以上版本報錯PHPExcel
- php之推薦vimPHP
- php多使用者商城系統推薦PHP
- AIX 5.3 TL05版本以上資料庫補丁Patch 5496862AI資料庫
- 【吐血推薦】領域驅動設計學習輸出
- Echarts-PHP 包推薦EchartsPHP
- 好書推薦--Modern PHPPHP
- PHP新手推薦書籍PHP
- 多執行緒、事件驅動與推薦引擎框架選型執行緒事件框架
- 大資料驅動下的電商個性化推薦(PPT)大資料
- 推薦一款社群驅動的 Linux 命令速查小程式Linux
- 基於AI+資料驅動的慢查詢索引推薦AI索引
- 檢視JDBC驅動版本JDBC
- 指定php版本使用 php命令PHP
- php包管理工具推薦PHP
- PHP:40+開發工具推薦PHP
- php 高效率寫法 推薦PHP
- 為什麼我推薦功能驅動的軟體設計方法? - khalilstemmler
- 請推薦一個SQL Server2000的2類驅動SQLServer
- linux網路卡驅動薦Linux
- oracle 10g以上版本,awr報告使用Oracle 10g
- 推薦給開發者的11個PHP框架PHP框架
- git自動化部署之webhooks的使用(php版本)GitWebHookPHP
- yum升級php到5.3PHP
- linux+php5.3版本出現錯誤死鎖解決LinuxPHP
- platform裝置驅動全透析 薦Platform
- redhat 5.3 版本建立 ocr 和voteRedhat
- 『軟體推薦』Xshell6.0版本綠色版本
- 日均上億慢查詢,如何基於AI+資料驅動索引推薦AI索引
- 【牆裂推薦】一本案例驅動的HTML5入門書HTML
- 【液晶模組系列基礎視訊】5.3.X-GUI字型驅動3GUI
- 非常實用的PHP程式碼片段推薦PHP