【问题标题】:mysqli_* or mysql_* performance?mysqli* 与 mysql* 性能?
【发布时间】:2012-07-11 13:15:29
【问题描述】:

在 php.net 网站上,他们说那些使用 mysql4.1 和 php5 或更高版本的人要求使用极端的“MYSQLI_”而不是“MYSQL_”。

他只想知道一件事,它会影响网站的性能,由于数据库(这在任何服务器上)导致网站出现了一些问题。

已经在使用各种解决方案。例如,缓存 HTML 页面。

但我的疑问确实是关于MYSQLI_ *,当我们使用它时,她连接到服务器和指定的数据库。根据php.net网站是mysql mysqli 改进和优化的mysql4.1+。

我想知道大型 MySQLi 的流量是否会给网站带来更好的性能。

PS.: 我知道“mysqli”和“mysql”的区别,考虑到 MYSQL4.1+ 的 PHP 编程和结构(它有新的列类型)。我想知道的是多个连接。

这个问题是关于性能的,谢谢

【问题讨论】:

标签: php mysql mysqli mysql5


【解决方案1】:

您应该阅读以下内容:

http://blog.secaserver.com/2011/07/php-driver-mysql-mysqli-pdo-mysql/

mysqli 提供更好的性能和更多的功能,正如 Evert 所说,如果您使用 mysqlnd,这一点尤其明显。

【讨论】:

    【解决方案2】:

    每当我们看到使用 mysql_* 函数的代码时,StackOveflow 上的一条常见评论应该可以回答您的问题:

    请不要将 mysql_* 函数用于新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDOMySQLi。如果您不能决定,this article 将帮助您选择。如果你想学习,这里是good PDO tutorial

    【讨论】:

    • 我已经知道怎么用了,就是想知道比服务器有没有优势。
    【解决方案3】:

    是的,MySQLi could give better performance to your site。 你可以使用persistent connections,它基本上与众所周知的connection pooling有相同的想法,但是connection pooling主要用于java开发(通常由网络服务器直接执行,例如Apache-Tomcat),持久连接是由MySQL and PHP 管理。

    此外,MySQLi 可以通过采用prepared statements 来帮助您保护查询。

    Mysqli extension 提供内置的清理处理代码,包括:

    • 回滚活动事务

    • 关闭准备好的语句(PHP 总是这样)

    • 关闭并删除临时表

    • 解锁表

    • 重置会话变量

    • 关闭处理程序

    • 释放使用 GET_LOCK() 获取的锁

    所有这些功能也可以帮助您提供更好的性能和安全性。

    更多信息可以参考:

    http://php.net/manual/en/mysqli.persistconns.php

    【讨论】:

      【解决方案4】:

      不再维护和弃用 mysql_ 函数。 mysqli_ 函数的性能会更好,尤其是如果您使用 mysqlnd(本机驱动程序)。

      停止使用已弃用的 API!

      【讨论】:

      • 我明白了,只是想知道是否比服务器有优势。我可以确认一下吗?
      • 是的,只要您使用 mysqlnd,它们会有所改进。但是,除非您的体型绝对庞大,否则这些好处对您来说将是微不足道的。您需要优化数据库和代码的可能性要大得多。当你开始使用 mysqli 时不要期望会有很大的变化
      猜你喜欢
      • 2013-07-13
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2021-12-10
      • 2016-09-11
      • 2010-10-08
      • 2010-10-21
      • 1970-01-01
      相关资源
      最近更新 更多