php5.3新特性 之 mysql native driver(mysqlnd)
概述
本文主要写给sa看的。码农就不用看了。
mysql native driver(mysqlnd) 自从php5.3.0开始成为官方源代码的一部分,
用来取代传统的mysql client library(libmysql)。
mysqlnd是C语言写成的PHP扩展(PHP extension)。
php5.3.0之前,码农们操作数据库使用的mysql扩展函数(mysql_connect,mysql_query等函数), mysqli系列函数, PDO MYSQL函数,都是通过libmysql来与mysql数据库进行通信的。
mysqlnd出现之后,SA们就多了一个选择: 可以通过mysqlnd来与mysql数据库进行通信。
mysqlnd不能做什么
虽然mysqlnd是一个PHP扩展,但它却没有提供任何的php函数(或者说是API)给码农们使用。
码农们仍然使用mysql 扩展函数(mysql_connect, mysql_query…),或者mysqli,或者PDO MYSQL来操作数据库。 这些函数都可以通过mysqlnd来与mysql数据库通信。
它是数据库与php函数的中间层。
为什么要使用mysqlnd
原来的libmysql用的好好的,为什么还要搞一个mysqlnd出来呢?
原因一: license问题
libmysql是MYSQL AB公司开发的,现在已经是Oracle集团所属的了,它使用MYSQL license发布。
This ultimately led to MySQL support being disabled by default in PHP
mysqlnd 是php的一部分,使用PHP license发布。
从此 licensing 的问题就算是解决了。
原因二:编译问题
使用libmysql的时候,如果要正常编译php,必须首先安装好mysql。
如果是单纯的一台WEB服务器,装个mysql似乎有点浪费了。
mysqlnd的话,就不必安装mysql,直接可用。
原因三:性能问题
由于mysqlnd是一个php扩展,使用了php memory management system,在内存使用方面效率相当高。
举个例子:
使用libmysql的时候,mysql结果集中的每一行都在内存中储存了
二次
!
使用mysqlnd,结果集只会储存一次。
而且它还服从于php.ini中memory_limit的设置。
Using MySQL Native Driver leads to comparable or better performance than using MySQL Client Library。
mysqlnd的新特性
1 改进的persistent connection。
2 特殊函数 mysqli_fetch_all()
http://cn2.php.net/manual/en/mysqli-result.fetch-all.php
只有安装了mysqlnd, mysqli中的这个函数才可用。
3 Performance statistics calls: mysqli_get_cache_stats(), mysqli_get_client_stats(), mysqli_get_connection_stats()
在分析性能瓶颈的时候,这些函数还是蛮好用的。
详细文档可以看这里: http://cn2.php.net/manual/en/mysqlnd.stats.php
4 使用mysqlnd之后,mysqli也支持persistent connection了。
这样看起来,mysqli受益最多。
5 PHP 5.3.3 之后,mysqlnd支持SSL。
6 PHP 5.3.2 之后,mysqlnd支持Compressed Protocol
7 PHP 5.3.4 之后,windows系统中的mysqlnd支持Named Pipes。
如何安装mysqlnd
LINUX环境中,默认情况下,php中的mysql扩展还是会使用libmysql的。
如果要使用mysqlnd,就要加一个configure的参数:
./configure --with-mysql=mysqlnd \ |
这样mysql, mysqli, pdo mysql都会使用mysqlnd。
WINDOWS中,mysqlnd默认启用,并且mysql, mysqli, pdo 默认都会使用mysqlnd。
什么都不用做。
php5.3新特性 之 mysql native driver(mysqlnd)的更多相关文章
- PHP5.3, PHP5.4, PHP5.5新特性
PHP 5.3中的新特性 1. 支持命名空间 (Namespace) 2. 支持延迟静态绑定(Late Static Binding) 3. 支持goto语句 4. 支持闭包.Lambda/Anony ...
- php5.3 PHP5.4 PHP5.5 新特性/使用PHP5.5要注意的
1.PHP 5.3中的新特性 1.1 PHP 5.3中的新特性 1.1.1. 支持命名空间 (Namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要的新特性. 在PHP5.3中,则只 ...
- PHP5.3新特性
1.首先对之前滥用的语法进行了规范 众所周知PHP在语言开发过程中有一个很好的容错性,导致在数组或全局变量中包含字符串不使用引号是可以不报错的,很多业余的开发者因为懒惰而产生的安全问题十分严重,之所以 ...
- PHP5.4新特性
PHP5.4 此次更新的关键新特性,包括:新增traits,更精简的Array数组语法,供测试使用的内建webserver,可以闭包使用的$this指针,实例化类成员访问, PHP 5.4.0 性能大 ...
- MySQL8新特性(2)--mysql的升级过程
在之前的版本中,安装新的版本mysql之后,mysql server在下一次启动时,会自动升级数据字典表,然后dba需要执行mysql_upgrade手动升级mysql schema中的系统表,以及其 ...
- Php5.5新特性 Generators详解
在PHP5.5.0版本中,新增了生成器(Generators)特性,用于简化实现迭代器接口(Iterator)创建简单的迭代器的复杂性. 通过生成器,我们可以轻松的使用foreach迭代一系列的数据, ...
- PHP5.4新特性(转)
PHP5.4正式前两天发布了,之前有看了一些PHP5.4主要特性相关文章,因此在这里小结一下. 其中好几点更新是由Laruence贡献的!本文部分内容也是源自Laruence的博客. 1. Buid- ...
- PHP5.4新特性之上传进度支持Upload progress
在PHP5.4版本当中给我们提供了好用的特性,上传进度的支持,我们可以配合Ajax动态获取SESSION当中的上传进度: 在使用这一特性之前,需要现在php.ini文件当中进行相应的设置: 1 2 ...
- php5.4新特性实践
本机安装的是wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24-32b.exe集成包 自带了php5.4 1. 数组写法 定义一个数组 过去: $arr = ...
随机推荐
- 我的css笔记
1.css的使用方法 内嵌样式 <p style="font-size:20pt;color:red;">这个Style定义<p> <!--里面的文字 ...
- 实用技巧:使用 jQuery 异步加载 JavaScript 脚本
JavaScript 加载器在 Web 开发中是非常强大和有用的工具.目前流行的几个加载器,像 curljs.LABjs 和 RequireJS 使用都很广泛.他们功能强大的,但有些情况下可以有更简单 ...
- 2014年3月新鲜出炉的最佳 JavaScript 工具库
一个 JavaScript 库是预先编写的 JavaScript 程序,用于简化 Web 应用程序开发,特别是对 Ajax 和其它 Web 为中心的技术.JavaScript 提供了多种方法,通过它来 ...
- Onsen UI – 新鲜出炉的 PhoneGap 界面框架
Onsen UI 是一个基于元素自定义的 HTML5 UI 框架,用于构建你的移动前端.这个一个基于 Web 组件的概念的框架,让构建应用程序变得更加轻松.Onsen UI 专门针对 PhoneGap ...
- JavaScript学习笔记-对象
枚举对象的属性:通常用for(...in...)来循环遍历,由于 for in 总是要遍历整个原型链,因此如果一个对象的继承层次太深的话会影响性能 for(var i in foo){ if(foo. ...
- javscript闭包的准备工作 -- 作用域与作用域链
作用域是JavaScript最重要的概念之一,想要学好JavaScript就需要理解JavaScript作用域和作用域链的工作原理.今天这篇文章对JavaScript作用域和作用域链作简单的介绍,希望 ...
- ARCGIS server没有服务、silverlight不能调试、windows server2008安装时跳出“安装程序无法创建新的系统分区也无法定位现有的系统分区”的解决方案
1.某个系统服务没开启 2.默认浏览器设置为IE.(IE内核有时候也不能调试) 3.BIOS里面的SATA设置为开启.
- [SharePoint] SharePoint 错误集 2
1 Run command “New-SPConfigurationDatabase" Feature Description: error message popup after run ...
- 超人学院二期学员分享hadoop工作经验
定于2月17日--2月23日的某一天,邀请咱们学员分享一下hadoop工作经验.对于没工作过的同学或者没从事过hadoop工作的同学,抓住机会啊,你可以提前准备自己关心的各种问题! 具体时间请关注QQ ...
- MySQL 安装 启动 基本语法概述
MySQL 安装 启动 基本语法概述 MySQL安装和配置 我是直接使用安装包:mysql-installer-community-5.6.10.1.msi 安装的时候其中有几点要注意: 1.记住端口 ...