php - mysql 与 mysqli。 mysqli 慢吗?

标签 php mysql mysqli mysqlnd

我终于切换到 mysqli 了。

但是我发现了显着的性能差异。

我有一个脚本,可以进行大约 25.000 个查询。 该脚本使用 mysqli 和 mysqlnd 作为驱动程序需要 15 秒 10 秒使用 MySQL 和旧的 MySQL 客户端库。

两种情况下的原始 SQL 时间均为 7.7 秒。

PHP 和 MySQL 之间的连接时间才是区别所在。

mysqli 比旧的 mysql 慢吗?

我已经找到了连接过程中的性能差异。

我将这些时间记录到脚本中。并且时间差大约4秒

function connect() {
    $time_start = $this->microtime_float();
        $this->link = mysql_connect($GLOBALS['DB_HOST'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASS'])
        or die ("Could not connect to DB\n");

        mysql_select_db($GLOBALS['DB_NAME'])
        or die("Could not select ".$GLOBALS['DB_NAME']."\n");
    $time_end = $this->microtime_float();   
    $_SESSION["MySQLTimeConnection"] += ($time_end - $time_start);
}







function connect() {
    $time_start = $this->microtime_float();
    $this->link = mysqli_connect($GLOBALS['DB_HOST'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASS'],$GLOBALS['DB_NAME'])
        or die ("Kunne ikke få forbindelse til databasen ".$GLOBALS['DB_NAME']."\n");
    $time_end = $this->microtime_float();   
    $_SESSION["MySQLTimeConnection"] += ($time_end - $time_start);
}

最佳答案

是的,对于标准查询,mysqli 通常比 PHP 中旧的 mysql 函数慢。

参见http://af-design.com/blog/2009/01/30/php-mysql-vs-mysqli-database-access-metrics/对于这样一个基准。

不过有两个要点:

1 - mysql 函数集已弃用,并且可能在某些时候不可用,因此性能并不是真正的问题。

2 - 在 25,000 个查询的示例中,您可能可以更改代码以使用准备好的语句(在 mysql 中无法做到这一点)并节省大量成本。在每页 1 或 2 个查询的较小规模上,准备好的语句可能不会提高性能,但同时您从 mysqli 看到的性能损失可能并不显着。

关于php - mysql 与 mysqli。 mysqli 慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375433/

相关文章:

php - 检查 MySQL 日志是否存在性能问题/DOS 攻击的可能性

PHP 和 SQL : fetch_assoc/while loop goes infinite when displaying data

php - MySQLi/PHP : Not redirecting to error page?

php - Mysqli 无法获取信息或bind_params

PHPExcel - 它可以像从数据库中获取一样逐行写入吗

php - PHP 7 的数组到字符串转换异常

php - 如何使用php下载pdf文件

javascript - .load 带有表单变量的页面

mysql - 重新排序MySQL中表的显示顺序

php - 警告 : mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool 值在第 21 行/... 中给出