mysql vs mysqli。 mysqli慢了吗?

时间:2015-09-03 12:18:44

标签: php mysql mysqli mysqlnd

我终于切换到了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);
}

1 个答案:

答案 0 :(得分:0)

是的,对于标准查询,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看到的性能损失可能并不重要。