【问题标题】:PHP/MySQL database connection priority?PHP/MySQL 数据库连接优先级?
【发布时间】:2011-01-31 21:58:03
【问题描述】:

我有一个使用统计信息所在的生产数据库。该数据库负责许多其他事情(不仅仅是统计计算)。我使用 php 在由分辨率决定的存储桶中定期汇总不同分辨率(日、周、月、年)的有趣统计信息。

我编写的 php 应用程序在运行时“完成”其数据,这样它将计算自上次运行以来分辨率和周期的所有汇总统计信息。如果我们想关闭它以调试数据库性能问题,这很有用,因为我可以重新打开它并让它独立于脚本运行频率完成其数据集(cron 作业可以从每天移动到每周等)。

我遇到的问题是计算相当密集,并且会提高生产数据库服务器的 QPS。有没有办法在特定的数据库连接上设置“优先级”,以便它只使用“关闭周期”来进行这些计算?

也许正确的回应是将我正在处理的表复制到不同的统计数据库中,但不幸的是,我没有足够的资源来尝试这样的事情(目前)。

提前感谢您的帮助, 乔什

【问题讨论】:

  • 我也有同样的问题!

标签: php mysql statistics


【解决方案1】:

low_priority_updates 应该完全满足您的需求。

【讨论】:

  • 很好奇这是如何工作的......“如果设置为 1,所有 INSERT、UPDATE、DELETE 和 LOCK TABLE WRITE 语句都会等待,直到受影响的表上没有挂起的 SELECT 或 LOCK TABLE READ。”这似乎是服务器设置?这似乎不合适,因为我不希望所有插入、更新、删除都受到影响(它是一个执行许多其他操作的生产数据库)。实际上,我希望将此连接发出的所有查询都视为低优先级(甚至选择等)
  • 文档说“变量范围:两者”,这意味着您可以全局设置它,但也只能用于会话/连接。它被标记为“动态:是”,所以dev.mysql.com/doc/refman/5.0/en/dynamic-system-variables.html 适用。
  • 感谢您的回复——我对答案投了赞成票。然而,密集查询的性质是在大型数据集上选择 avg() 和选择 max(),以及在小时间域上进行许多小选择。它并不是我本身担心的插入、更新和删除(它们位于与产品没有交互的表上,因此锁不会侵入)。由于排序等原因,我更担心最大化 I/O 或压碎处理器。我不确定是否有一种通用方法可以在不使用 db 时简单地使用它,除非我错过了一些东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 2011-04-04
  • 2015-06-19
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 2010-12-13
相关资源
最近更新 更多