mysqli* 与 mysql* 性能?

Posted

技术标签:

【中文标题】mysqli* 与 mysql* 性能?【英文标题】:mysqli_* or mysql_* performance? 【发布时间】: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 编程和结构(它有新的列类型)。我想知道的是多个连接。

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

【问题讨论】:

请不要将mysql_* 函数用于新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDO 或MySQLi。如果您不能决定,this article 将帮助您选择。如果你想学习,here is a good PDO tutorial. Why shouldn't I use mysql_* functions in PHP?的可能重复 【参考方案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 并使用PDO 或MySQLi。如果您不能决定,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 时不要期望会有很大的变化

以上是关于mysqli* 与 mysql* 性能?的主要内容,如果未能解决你的问题,请参考以下文章

mysqli_fetch_assoc() 性能 PHP5.4 与 PHP7.0

PDO和MySQLi , MySQL区别与选择?

php使用mysqli连接Mysql,怎么使用永久连接

PHP开发异步高性能的MySQL代理服务器

mysqlmysqliPDO一句话概括

PDO和MySQLi区别与选择?