0

我终于切换到mysqli。

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

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

在这两种情况下,原始 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);
}
4

1 回答 1

0

是的,标准查询mysqli通常比mysqlPHP 中的旧函数慢。

有关此类基准,请参阅http://af-design.com/blog/2009/01/30/php-mysql-vs-mysqli-database-access-metrics/

不过有两个重点:

1 -mysql不推荐使用一组功能,并且可能在某些时候不可用,因此性能并不是真正的问题。

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

于 2015-09-03T13:26:18.277 回答