效率:我应该一次拉多少个MySQL行?

时间:2014-01-24 19:18:36

标签: mysql sql

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

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

一次选择和更新多行会加快我的脚本并处理更多行吗?如果是这样,我应该下拉多少行?我有一个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

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

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

3 个答案:

答案 0 :(得分:1)

关于绩效,不应做出任何假设。你应该衡量一些事情,以便做出决定。您应该定义性能目标,然后测试您的系统。我建议使用像mysqlslaphammerdb这样的加载测试工具之王。如果您遇到问题,可以使用neor之类的 profiler

希望我帮忙!

答案 1 :(得分:1)

尝试使用负载测试,因为最终它取决于你想要测量的东西,但在我看来,一次获取更多行更有效,因为如果你获取表中最后一行并再次获取行这是第二个,然后你在表中循环两次,而如果你一次获取多行,那么你只需循环一次并获得所有行。

希望我帮助

答案 2 :(得分:0)

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

我的方法是把这个数字搞得一团糟,直到我满意为止。