首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL和PHP性能

问MySQL和PHP性能
EN

Stack Overflow用户
提问于 2014-04-08 16:47:28
回答 1查看 257关注 0票数 2

我有一个关于mysql_query (我知道它正在被弃用,很快就会过时)和mysqli之间的差异以及我注意到的相对性能差异的问题。

所以简单地说-我用PHP5.4从头开发了一个应用程序接口,我使用的是MySQL v5.0.96,运行在一个LAMP服务器上(centos,apache,mysql,php),四核3.0 PHP,16 an内存,100 this双工控制器...一台标准的服务器。

从POSTMAN (如果你不知道,这是一个很棒的应用--这是一个值得一看的google chrome扩展)对API的初始调用平均需要160ms,考虑到我在世界的另一端,并且必须做一些身份验证检查,我并不太担心剩下的,但真正让我震惊的是下面两组代码之间的性能差异:

调用+返回一个包含55个数组的结果是使用mysqli的索引表,如下所示:

代码语言:javascript
复制
    $mysqli = new \mysqli("127.0.0.1", "username", "password", "database", 3306);
    if ($mysqli->connect_errno) {
        echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
    }
    $result = $mysqli->query("SELECT id, name FROM products ORDER BY id");
    $rows = array();
    while($row = $result->fetch_row()) {
        $rows[] = $row;
    }
    return $rows;

上面的mysqli平均需要850ms,其中一些峰值在1000ms,一些低点在650ms

相比之下,我刚刚这样做了,因为我认为返回55条记录的数组似乎太高了,我决定使用老式的mysql_query (是的,我知道-已经过时了……)使用下面的代码,你会注意到,我已经小心地使用不同的方法尽可能相同地复制了这两个代码。

代码语言:javascript
复制
    $con = mysql_connect("127.0.0.1","username","password");
    if (!$con){ die('Could not connect: ' . mysql_error()); }
    mysql_select_db('database', $con);
    $row = array();
    $result = mysql_query("SELECT id, name FROM products ORDER BY id");
    while($rows = mysql_fetch_assoc($result)) {
        $row[] = $rows;
    }
    return $row;

mysql_query的平均时间为220毫秒,最高为300毫秒,最低为180毫秒

有人能告诉我为什么原来的mysql_query比新的mysqli快四倍吗?我想不通为什么会发生这种事...我很想知道我是在用mysqli做错了什么,还是只是一个奇怪的观察?当然,新的通常意味着更好,因此更好的意味着更快/更准确,所需的计算能力更少?

EN

回答 1

Stack Overflow用户

发布于 2014-04-21 18:41:04

mysql_query,传统的方法由于其简单性而有其自身的优势。其中,as mysqli有它自己的。

它取决于mysql数据库是如何设计的,因此速度也取决于它。

如果您需要多次、一次又一次地连接到数据库,最好使用mysqli,因为它不会从单个主机建立到数据库的多个连接,而传统的mysql_query方式将建立多个连接,这可能会达到数据库主机的最大连接数量限制。但是的,连接越多,工作就越快。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22931976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档