草庐IT

python mysql execute() 很慢

coder 2023-10-23 原文

我的应用程序运行缓慢是因为 mysql 的 execute() 函数。我制作了一个简单的 sql 查询来说明这个问题:

SELECT * FROM `cid444_agg_big` c WHERE 1

.

>>> import MySQLdb as mdb
>>> import time;
>>> 
>>> dbconn =  mdb.connect('localhost','*****','*****','*****');
>>> cursorconn = dbconn.cursor()
>>> 
>>> sql="SELECT * FROM `cid444_agg_big` c WHERE 1";
>>> 
>>> startstart=time.time();
>>> cursorconn.execute(sql);
21600L #returned 21600 records
>>> print time.time()-startstart, "for execute()"
2.86254501343 for execute() #why does this take so long?
>>> 
>>> startstart=time.time();
>>> rows = cursorconn.fetchall()
>>> print time.time()-startstart, "for fetchall()"
0.0021288394928 for fetchall() #this is very fast, no problem with fetchall()

在 mysql shell 中运行此查询,产生 0.27 秒,或快 10 倍!!!

我唯一的想法是返回数据的大小。这将返回 21600 个“宽”行。所以有很多数据被发送到 python。数据库是本地主机,因此没有网络延迟。

为什么这需要这么长时间?

更新更多信息

我用 php 写了一个类似的脚本:

$c = mysql_connect ( 'localhost', '*****', '****', true );
mysql_select_db ( 'cachedata', $c );

$time_start = microtime_float();
$sql="SELECT * FROM `cid444_agg_big` c WHERE 1";
$q=mysql_query($sql);$c=0;
while($r=mysql_fetch_array($q))
$c++;//do something?
echo "Did ".$c." loops in ".(microtime_float() - $time_start)." seconds\n";


function microtime_float(){//function taken from php.net
  list($usec, $sec) = explode(" ", microtime());
  return ((float)$usec + (float)$sec);
}

这打印:

Did 21600 loops in 0.56120800971985 seconds

这会循环处理所有数据,而不是一次检索所有数据。 PHP 似乎比 Python 版本快 6 倍....

最佳答案

The default MySQLdb cursor执行时将完整的结果集提取到客户端,fetchall() 只会将数据从内存复制到内存。

如果你想将结果集存储在服务器上并按需获取,你应该使用SSCursor相反。

Cursor:
This is the standard Cursor class that returns rows as tuples and stores the result set in the client.

SSCursor:
This is a Cursor class that returns rows as tuples and stores the result set in the server.

关于python mysql execute() 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14224729/

有关python mysql execute() 很慢的更多相关文章

  1. ruby-on-rails - Rails 3 Cli 执行命令真的很慢吗? - 2

    有人知道为什么我的rails3.0.7cli这么慢吗?当我运行railss或railsg时,他大约需要5秒才能真正执行命令...有什么建议吗?谢谢 最佳答案 更新:我正在将我的建议从rrails切换到rails-sh,因为前者支持REPL,而rrails不是用例。此外,当与ruby​​环境结合使用时,修补似乎确实可以提高性能变量,现在反射(reflect)在答案中。一个可能的原因可能是这个performancebuginruby每当在ruby​​代码中使用“require”时,它就会调用一些代码(更多详细信息here)。在使用Rai

  2. ruby-on-rails - Ruby 的 range step 方法导致执行速度很慢? - 2

    我有这段代码:date_counter=Time.mktime(2011,01,01,00,00,00,"+05:00")@weeks=Array.new(date_counter..Time.now).step(1.week)do|week|logger.debug"WEEK:"+week.inspect@weeks从技术上讲,代码有效,输出:SatJan0100:00:00-05002011SatJan0800:00:00-05002011SatJan1500:00:00-05002011etc.但是执行时间完全是垃圾!每周计算大约需要四秒钟。我在这段代码中是否遗漏了一些奇怪的低效

  3. ruby - ruby 插件会使启动 vim 很慢吗? - 2

    最近,当我运行vim来编辑ruby​​文件或rails项目时,它需要很长时间才能启动。但是在纯文本文件上调用时它启动速度很快。有什么方法可以找出哪些ruby​​vim插件最能延长启动时间? 最佳答案 如果您使用的是7.2.286或更新版本,您可以运行vim--startuptimevim.outfoo.rb记录启动过程的各个部分需要多长时间。 关于ruby-ruby插件会使启动vim很慢吗?,我们在StackOverflow上找到一个类似的问题: https:

  4. ruby-on-rails - Rails 开发服务器很慢,需要很长时间才能加载一个简单的页面 - 2

    关于Rails在开发模式下运行缓慢的类似帖子也有,但这些帖子中的解决方案都没有对我产生任何影响。我试过安装可以提高性能的gem并修改配置文件,但都没有成功。我刚开始使用Rails,所以我正在运行“Rails入门”指南中的启动应用程序,这是一个小博客。我已经按照推荐安装了Ruby1.9.3和Rails3.2.13。我在OS/X10.7.5上运行。当加载教程应用的起始页时,实际上只有1行文本和1个链接,需要20-40秒。对任何页面的每个后续请求都需要20-40秒。然而,当我查看服务器日志时,Rails所做的任何事情似乎都不会花费很长时间。日志中的事件之间的时间一直在占用。作为Rails的初

  5. ruby - 为什么人们说 Ruby 很慢? - 2

    关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion我喜欢RubyonRails,我将它用于我所有的Web开发项目。几年前,有很多人在谈论Rails是一个内存大户,以及它如何不能很好地扩展,但这些建议被GreggPollackhere搁置了。.不过最近,我听到有人说Ruby本身很慢。为什么Ruby被认为很慢?我不觉得Ruby很慢,但话又说回来,我只是用它来制作简单的CRUD应用程序和公司博客。在我发现Ruby变慢之前,我需要做什么样的项目?还是这种缓慢只是

  6. javascript - Jquery 速度,使用 .html(string) 真的很慢,我怎样才能加快速度? - 2

    我有一个函数平均需要250毫秒才能完成。我想在更短的时间内完成此操作,functionupdateDisplay(){varstart=newDate().getTime();var$this=$(this);vardata=$this.data('ansi');varhtml='';for(vari=0;i';}varcreate=newDate().getTime();console.log('Buildhtml:'+(create-start));$this.html(html);varend=newDate().getTime();console.log('Updatehtml

  7. javascript - 为什么 innerHTML = ""在 Firefox 中很慢 - 2

    我正在测试将html元素动态添加到DOM的不同方法的速度。我构建了一个测试器here(代码是工作版本,非常草率)。对于不同的浏览器,结果(非常)不同,Chrome在速度方面获得了所有分数,而Opera位居第二-但这不是这里的问题。在Firefox中,我检测到清除div(从它的子节点)时出现问题。添加大约50.000个div元素时,需要很长时间才能清除,仅使用[div].innerHTML="";这是怎么回事?Firefox是否为此实现了一些内在的垃圾收集方法? 最佳答案 虽然我不确定innerHTML="",但您遗漏了一个可能使用D

  8. javascript - Visual Studio 2015 文件打开速度很慢? - 2

    我刚刚在我的Windows10机器上下载了VS152015Community,并安装了所有默认包。无论出于何种原因,如果我尝试打开一个javascript文件或几乎任何其他扩展,加载它大约需要15-20秒。这段代码在文本中只说了单词test。现在无论出于何种原因,如果我决定右键单击javascript文件并选择打开方式>“MicrosoftVisualStudio版本选择器”它不是使用普通的MicrosoftVisualStudio2015,而是立即打开,最多只需2-3秒...这是怎么回事?这太烦人了!我已经重新安装VS3次,清除了所有旧的垃圾文件,甚至尝试在没有安装单个工具或扩展的情

  9. javascript - 为什么 for-in 在 javascript 中很慢? - 2

    我在几个地方读到for-in循环比遍历数组慢...虽然我知道与在场景后面发生的任何迭代相比,在sizeof(type)block中向前移动实际上是毫不费力的一个对象的键,我还是很好奇,究竟是什么原因这么慢...是否必须执行反向散列函数才能获取key,这个过程很慢? 最佳答案 在任何特定引擎的情况下,真正的答案可能取决于该引擎的实现。(差异的大小,如果有的话。)但是,有不变量。例如,考虑:varobj={a:"alpha",b:"beta"};varname;for(nameinobj){console.log(obj[name]);

  10. javascript - 在 JS 中写一个 cookie 很慢吗? - 2

    我需要使我的网站在客户端更快。我想知道我过多的Javascriptcookie操作是否会降低浏览器的速度。它使用硬盘驱动器,这是计算机中最慢的组件。在严重碎片化的硬盘驱动器上,cookie操作会卡住浏览器吗?JS是否对cookie写入/读取(缓存等)进行了任何优化。我可以利用这些优化来改进我的网站吗?用服务器端数据库替换客户端cookie是不可能的,因为我的服务器已经重载了。 最佳答案 有几种方法可以加快客户端页面的速度,但我猜测减少cookie的使用最多只能节省几微秒。总的来说,请确保您只保存所需的内容。您还可以进行大量其他优化,

随机推荐