【问题标题】:Efficiency: How many MySQL rows should I pull at a time?效率:我应该一次提取多少 MySQL 行?
【发布时间】:2014-01-25 03:35:48
【问题描述】:

现在,我有一个在 python 中执行以下操作的脚本:

infinite loop:
     select 1 row from MySQL
     works with row data
     updates 1 row if needed in MySQL (<10% of the time)

一次选择和更新多于 1 行会加快我的脚本并处理更多行吗?如果是这样,我应该下拉多少行?我有一个 512 MB RAM 的小型 VPS。一次 1000 行会不会太多?太少了?

新的脚本逻辑是:

infinite loop:
    select 1000 rows from MySQL
    loop 1000 times:
        work with row data
        appends mysql statement to string if update is required
    runs the single update statement containing 10-50 commands

新逻辑将有 1 个大选择请求和 1 个大更新请求。这会比许多小的选择和更新请求更好吗?

我找不到太多关于此的信息。非常感谢!

【问题讨论】:

  • 我建议测试并找出最适合您系统的拉取数量。
  • 但是多行无疑比 1 by 1 效率更高?
  • 您需要检查多少行?我们这里没有太多的参考框架。
  • 我现在正在检查大约 100 万行,并且还在增长。完成后,它将从头开始。

标签: mysql sql


【解决方案1】:

关于性能,不应做任何假设。您应该衡量事物以做出决定。您应该定义性能目标,然后测试您的系统。我建议使用一些负载测试工具之王,例如mysqlslaphammerdb。如果你有问题,那么你可以使用某种profiler,比如neor

希望我能帮上忙!

【讨论】:

    【解决方案2】:

    尝试使用负载测试,因为最终它取决于您要如何衡量事物,但我认为一次获取​​更多行更有效,因为如果您获取表中最后一行并再次获取该行这是倒数第二个,然后您在表中循环两次,而如果您一次获取多行,那么您只需循环一次并获取所有行。

    希望我能帮上忙

    【讨论】:

      【解决方案3】:

      通常,您希望尽可能少地调用数据库。至于每次调用获取多少记录完全取决于您的系统。

      我的方法是乱搞数字,直到我满意为止。

      【讨论】:

        猜你喜欢
        • 2020-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多