概述

本文主要写给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 \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
[other options]

这样mysql, mysqli, pdo mysql都会使用mysqlnd。

WINDOWS中,mysqlnd默认启用,并且mysql, mysqli, pdo 默认都会使用mysqlnd。
什么都不用做。

via:
http://www.zhaokunyao.com/archives/1384

php5.3新特性 之 mysql native driver(mysqlnd)的更多相关文章

  1. PHP5.3, PHP5.4, PHP5.5新特性

    PHP 5.3中的新特性 1. 支持命名空间 (Namespace) 2. 支持延迟静态绑定(Late Static Binding) 3. 支持goto语句 4. 支持闭包.Lambda/Anony ...

  2. 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中,则只 ...

  3. PHP5.3新特性

    1.首先对之前滥用的语法进行了规范 众所周知PHP在语言开发过程中有一个很好的容错性,导致在数组或全局变量中包含字符串不使用引号是可以不报错的,很多业余的开发者因为懒惰而产生的安全问题十分严重,之所以 ...

  4. PHP5.4新特性

    PHP5.4 此次更新的关键新特性,包括:新增traits,更精简的Array数组语法,供测试使用的内建webserver,可以闭包使用的$this指针,实例化类成员访问, PHP 5.4.0 性能大 ...

  5. MySQL8新特性(2)--mysql的升级过程

    在之前的版本中,安装新的版本mysql之后,mysql server在下一次启动时,会自动升级数据字典表,然后dba需要执行mysql_upgrade手动升级mysql schema中的系统表,以及其 ...

  6. Php5.5新特性 Generators详解

    在PHP5.5.0版本中,新增了生成器(Generators)特性,用于简化实现迭代器接口(Iterator)创建简单的迭代器的复杂性. 通过生成器,我们可以轻松的使用foreach迭代一系列的数据, ...

  7. PHP5.4新特性(转)

    PHP5.4正式前两天发布了,之前有看了一些PHP5.4主要特性相关文章,因此在这里小结一下. 其中好几点更新是由Laruence贡献的!本文部分内容也是源自Laruence的博客. 1. Buid- ...

  8. PHP5.4新特性之上传进度支持Upload progress

    在PHP5.4版本当中给我们提供了好用的特性,上传进度的支持,我们可以配合Ajax动态获取SESSION当中的上传进度: 在使用这一特性之前,需要现在php.ini文件当中进行相应的设置:   1 2 ...

  9. php5.4新特性实践

    本机安装的是wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24-32b.exe集成包 自带了php5.4 1. 数组写法 定义一个数组 过去: $arr = ...

随机推荐

  1. jquery层级原则器(匹配前一个元素后的所有平辈元素)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Android存储空间不足的解决办法

    安装应用时,有时会出现错误Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE,这是存储空间不足的错误,这时就只能将应用安装到SD卡,在And ...

  3. C#异步下载文件--基于http请求

    1.废话不多说,直接上代码: using System; using System.IO; using System.Net; namespace AsyncProgram { class Progr ...

  4. python爬虫技术的选择

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica } span.s1 { } 本篇文章不是入门帖,需要对python和爬虫领 ...

  5. 如何在BPM中使用REST服务(1):通过程序访问网页内容

    这篇文章主要描述如何通过程序来访问网页内容,这是访问REST服务的基础. 在Java中,我们可以使用HttpUrlConnection类来实现,代码如下. package http.base; imp ...

  6. Nivo Slider - 世界上最棒的 jQuery 图片轮播插件

    Nivo Slider 号称世界上最棒的图片轮播插件,有独立的 jQuery 插件和 WordPress 插件两个版本.目前下载量已经突破 1,800,000 次!jQuery 独立版本的插件主要有如 ...

  7. go语言 安装版 Windows7安装截图

    这个比较简单的 一路next. 查看:解压版安装go. //http://www.cnblogs.com/osfipin/

  8. 部署基于国际版Azure的SharePoint三层架构服务器场

    前言 微软Azure国际版已经很普及了,这里没有用国内版(世纪互联),用的是国际版,当然是由于公司性质的缘故.这里一步步图文的方式,分享给大家创建Azure国际版的SharePoint三层架构的过程, ...

  9. 开通了个人微信公众号:slbGTD,准备把GTD相关的内容写成一本书

    <Get Things Done>是一本书的名字,简称为GTD,中文书名为<搞定>,同时GTD也是一种时间管理.自我管理的系统性方法,既有让你办事更有效率的技巧,也有多个的视角 ...

  10. Android自定义ScrollView分段加载大文本数据到TextView

    以下内容为原创,转载时请注明链接地址:http://www.cnblogs.com/tiantianbyconan/p/3311658.html 这是我现在碰到的一个问题,如果需要在TextView中 ...