【问题标题】:How expensive an operation is connecting to a Mysql database?连接到 Mysql 数据库的操作有多昂贵?
【发布时间】:2011-09-11 18:57:14
【问题描述】:

在代码的某些函数中,php 将使用循环对同一张表执行数百甚至数千个查询。目前,它为每个查询创建一个新的数据库连接。那个手术有多贵?通过重复使用相同的连接,我会看到显着的速度提高吗?要改变这种行为并使用相同的数据库,可能需要进行相当多的重构。

php使用mysql_connect连接数据库。

根据我在这里所说的,您是否会推荐其他明显的优化(例如,我已经阅读过关于锁定表的内容......)?

编辑: 我的问题更多是关于使用单个连接的好处,而不是如何避免使用多个连接。

【问题讨论】:

标签: php mysql optimization memcached


【解决方案1】:

mysql_connect 的文档指出:

如果使用相同的参数对 mysql_connect() 进行第二次调用,则不会建立新链接,而是返回已打开链接的链接标识符。

因此,除非您使用不同的凭据进行连接,否则更改该部分代码不会影响性能。

【讨论】:

  • 除非他在每次查询后都打电话给mysql_close()
  • 我没有意识到 mysql_connect 没有创建多个连接。谢谢
【解决方案2】:

我使用Zend_Framework,我的数据库分析显示连接本身比我的大多数查询花费的时间长近 10 倍。我有两个不同的数据库要连接,每个请求只连接一次。

我会说为每个查询重新连接是糟糕的设计,但重构的问题比这更复杂。需要问的问题:

  1. 当前是否存在性能问题?
  2. 您是否进行了代码分析以缩小性能问题发生的范围?
  3. 此重构需要多长时间?考虑所涉及的测试,而不仅仅是编码时间。

【讨论】:

  • 当前存在性能问题。我还没有完成代码分析。我不知道重构需要多少时间,因为我不是 100% 熟悉代码库。
  • 听起来这是一个很好的重构候选者!重申一下,代码分析应该是优先考虑重构的一个重要因素。
  • 我对这个投了反对票。如果选民对原因发表评论,我会很好。
【解决方案3】:

原始问题的答案应该是显而易见的。如果它对您来说不是很明显,那么如何自己找出它有多大影响应该仍然很明显。

还有其他明显的优化

没有 - 因为您没有提供有关表结构的任何详细信息,也没有提供您正在运行的查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2021-04-24
    • 1970-01-01
    • 2018-08-07
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多