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* 性能?的主要内容,如果未能解决你的问题,请参考以下文章