如何在 mysql db 上进行非侵入式数字运算?
How to do non-obtrusive number-crunching on mysql db?
不知道如何表述这个问题。
我有一个非常繁忙的生产数据库,每天有近 100 万次点击。
现在我想对实时数据做一些研究(编辑: "real-time" 可能有几分钟的历史)。
在不中断生产的情况下执行此操作的最佳方法是什么?
想法:
- 在unix shell中,有
nice
的概念。它允许我为特定线程赋予低优先级,因此它仅在其他线程空闲时使用 CPU 。我基本上是在 mysql 上下文中寻找相同的内容。
- 获取数据库转储并进行离线研究:
- 这不会让我的网站在获取转储所需的几分钟内瘫痪吗?
- 有没有办法配置转储命令,使其以
nice
方式进行提取(见上文)?
- 直接在实时数据库上执行 SQL 命令:
- 有没有办法再次配置命令,以便它们以
nice
方式执行?
更新:反对想法 2 的论点是什么?
根据 Whosebug 上的评论和面对面的讨论,以下是对来到这里并提出相同问题的人的回答:
- 在 MySQL 中,似乎没有任何
nice
类型的进程优先级控制(例如,我听说在 Oracle 中有)
- 由于任何 "number-crunching" 最多被视为我网站的另一个访问者,因此不会降低网站性能。所以它可以安全地 运行 在生产中(只读,当然......)。
不知道如何表述这个问题。
我有一个非常繁忙的生产数据库,每天有近 100 万次点击。
现在我想对实时数据做一些研究(编辑: "real-time" 可能有几分钟的历史)。
在不中断生产的情况下执行此操作的最佳方法是什么?
想法:
- 在unix shell中,有
nice
的概念。它允许我为特定线程赋予低优先级,因此它仅在其他线程空闲时使用 CPU 。我基本上是在 mysql 上下文中寻找相同的内容。 - 获取数据库转储并进行离线研究:
- 这不会让我的网站在获取转储所需的几分钟内瘫痪吗?
- 有没有办法配置转储命令,使其以
nice
方式进行提取(见上文)?
- 直接在实时数据库上执行 SQL 命令:
- 有没有办法再次配置命令,以便它们以
nice
方式执行?
- 有没有办法再次配置命令,以便它们以
更新:反对想法 2 的论点是什么?
根据 Whosebug 上的评论和面对面的讨论,以下是对来到这里并提出相同问题的人的回答:
- 在 MySQL 中,似乎没有任何
nice
类型的进程优先级控制(例如,我听说在 Oracle 中有) - 由于任何 "number-crunching" 最多被视为我网站的另一个访问者,因此不会降低网站性能。所以它可以安全地 运行 在生产中(只读,当然......)。