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 Mysql support: 是mysql 還是mysqlnd?PHPMySql
- php多使用者商城系統推薦PHP
- PHPExcel 在 PHP7.0 以上版本報錯PHPExcel
- 好書推薦--Modern PHPPHP
- Echarts-PHP 包推薦EchartsPHP
- 【吐血推薦】領域驅動設計學習輸出
- 多執行緒、事件驅動與推薦引擎框架選型執行緒事件框架
- 推薦一款社群驅動的 Linux 命令速查小程式Linux
- 指定php版本使用 php命令PHP
- php包管理工具推薦PHP
- 基於AI+資料驅動的慢查詢索引推薦AI索引
- 8款3000元以上的手機推薦 三千以上的手機哪個好
- 為什麼我推薦功能驅動的軟體設計方法? - khalilstemmler
- 推薦一個 PHP 管道外掛 LeaguePipelinePHP
- 『軟體推薦』Xshell6.0版本綠色版本
- Linux伺服器選擇哪個版本好?常用版本推薦Linux伺服器
- 推薦一個 PHP 管道外掛 League\PipelinePHP
- 推薦有禮 | 京東雲推薦返利活動說明
- react router為什麼推薦使用browserHistory而不推薦hashHistory?React
- 日均上億慢查詢,如何基於AI+資料驅動索引推薦AI索引
- 值得推薦的C#不同版本語言特性C#
- 2020年最值得推薦的PHP開源商城PHP
- 《Redis 使用手冊》- 字串(PHP 版本)Redis字串PHP
- DedeCMSError-(PHP5.3andabove)Pleasesetrequest_orderErrorPHP
- 『學習資料推薦』撩課學院最新WEB前端全程專案驅動教程Web前端
- Android8.0以上版本啟動後臺service報IllegalStateExceptionAndroidException
- office哪個版本最好用 office最穩定實用的版本推薦
- 在 macOS 下使用 PHP-version 切換 PHP 版本MacPHP
- 技術書籍推薦-v1.0版本
- 【推薦】2022年最受歡迎的linux發行版本!Linux
- 4000元以上買什麼手機好?幾款4000元以上最值得買的旗艦手機推薦
- 推薦一個php7+ mongodb三方類PHPMongoDB
- 微破譯-php原始碼混淆解密破解工具推薦PHP原始碼解密
- 推薦一款基於業務行為驅動開發(BDD)測試框架:Cucumber!框架
- 2022年DDD新書推薦:領域驅動設計+Wardley對映+團隊拓撲新書
- Binder驅動的使用